refactor: 调整部署结构以支持多容器管理

- 重新组织部署目录结构:
  - DEPLOY_ROOT: /home/novalon/docker-app (多容器管理根目录)
  - PROJECT_NAME: novalon-website (项目名称)
  - PROJECT_DIR: /home/novalon/docker-app/novalon-website (项目目录)
  - CONTAINER_NAME: novalon-website (容器名称)
- 修复heredoc变量展开问题,使用双引号ENDSSH
- 在上传文件前创建项目目录
- 更新所有容器相关命令使用正确的变量
- 更新部署文档,添加多容器管理结构说明
- 添加运维告警邮箱信息到项目信息
This commit is contained in:
张翔
2026-03-26 19:38:17 +08:00
parent 8b48617bb7
commit 88837924f2
2 changed files with 38 additions and 12 deletions
+23 -1
View File
@@ -6,9 +6,31 @@
- **域名**: novalon.cn
- **服务器IP**: 139.155.109.62
- **ICP备案号**: 蜀ICP备2026013658号
- **部署目录**: /home/novalon/docker-app
- **部署目录**: /home/novalon/docker-app (多容器管理根目录)
- **项目目录**: /home/novalon/docker-app/novalon-website (当前项目)
- **容器名称**: novalon-website
- **版本号**: 1.0.0
- **运维告警邮箱**: ops@novalon.cn
## 多容器管理结构
```
/home/novalon/docker-app/ # 部署根目录
├── novalon-website/ # Novalon官网项目
│ ├── docker-compose.yml
│ ├── Dockerfile
│ ├── nginx.conf
│ ├── .env
│ └── setup-ssl.sh
├── other-project-1/ # 其他项目1(示例)
│ ├── docker-compose.yml
│ └── ...
└── other-project-2/ # 其他项目2(示例)
├── docker-compose.yml
└── ...
```
每个项目在 `/home/novalon/docker-app` 根目录下有独立的项目目录,包含各自的配置文件和Docker容器。
## 部署架构
+15 -11
View File
@@ -4,12 +4,15 @@ set -e
SERVER_IP="139.155.109.62"
SERVER_USER="root"
DEPLOY_DIR="/home/novalon/docker-app"
PROJECT_DIR="novalon-website"
DEPLOY_ROOT="/home/novalon/docker-app"
PROJECT_NAME="novalon-website"
PROJECT_DIR="$DEPLOY_ROOT/$PROJECT_NAME"
CONTAINER_NAME="novalon-website"
echo "🚀 开始部署Novalon网站到服务器 $SERVER_IP"
echo "📁 部署目录: $DEPLOY_DIR"
echo "🐳 容器名称: $PROJECT_DIR"
echo "📁 部署目录: $DEPLOY_ROOT"
echo "📁 项目目录: $PROJECT_DIR"
echo "🐳 容器名称: $CONTAINER_NAME"
echo "📦 版本号: 1.0.0"
echo ""
@@ -22,13 +25,14 @@ echo "✅ SSH连接验证成功"
echo ""
echo "📋 步骤2: 上传部署文件..."
scp -r docker-compose.yml Dockerfile nginx.conf .env.example setup-ssl.sh "$SERVER_USER@$SERVER_IP:$DEPLOY_DIR/"
ssh "$SERVER_USER@$SERVER_IP" "mkdir -p '$PROJECT_DIR'"
scp -r docker-compose.yml Dockerfile nginx.conf .env.example setup-ssl.sh "$SERVER_USER@$SERVER_IP:$PROJECT_DIR/"
echo "✅ 部署文件已上传"
echo ""
echo "📋 步骤3: 在服务器上执行部署..."
ssh "$SERVER_USER@$SERVER_IP" << 'ENDSSH'
cd '$DEPLOY_DIR'
ssh "$SERVER_USER@$SERVER_IP" << ENDSSH
cd '$PROJECT_DIR'
echo "🔒 配置SSL证书..."
chmod +x setup-ssl.sh
@@ -52,7 +56,7 @@ echo "📋 等待服务启动..."
timeout=60
elapsed=0
while [ $elapsed -lt $timeout ]; do
if docker ps | grep -q "novalon-website"; then
if docker ps | grep -q "$CONTAINER_NAME"; then
echo "✅ 服务已启动"
break
fi
@@ -65,10 +69,10 @@ if [ $elapsed -ge $timeout ]; then
fi
echo "📋 检查容器状态..."
docker ps | grep "$PROJECT_DIR"
docker ps | grep "$CONTAINER_NAME"
echo "📋 检查容器日志..."
docker logs novalon-website --tail 50
docker logs "$CONTAINER_NAME" --tail 50
echo "📋 配置SSL证书自动续期..."
# 添加certbot自动续期cron任务
@@ -95,7 +99,7 @@ echo ""
echo "📋 后续步骤:"
echo " 1. 验证网站可访问性"
echo " 2. 检查容器运行状态: docker ps"
echo " 3. 查看容器日志: docker logs $PROJECT_DIR"
echo " 3. 查看容器日志: docker logs $CONTAINER_NAME"
echo " 4. 验证HTTPS配置"
echo " 5. 测试网站主要功能"
echo " 6. 检查SSL证书自动续期: crontab -l"