From 2a02c19dcbda5d5ab12b951cc5751214f46e9c5f Mon Sep 17 00:00:00 2001 From: Wang Zhuoxuan Date: Fri, 17 Apr 2026 00:31:49 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E7=BB=9F=E4=B8=80=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=20Docker=20Compose=20V2=20=E5=91=BD=E4=BB=A4=E8=AF=AD?= =?UTF-8?q?=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 将所有 docker-compose(V1)替换为 docker compose(V2): - CI/CD 流水线、部署脚本、文档中的命令调用 - 安装包名 docker-compose → docker-compose-plugin --- .gitea/workflows/deploy.yml | 6 +++--- docker-compose.prod.yml | 6 +++--- docs/ci-deployment-guide.md | 38 ++++++++++++++++++------------------- scripts/deploy.sh | 18 +++++++++--------- 4 files changed, 34 insertions(+), 34 deletions(-) diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index 7abd1b3..9fad3af 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -127,7 +127,7 @@ jobs: - name: Deploy test environment run: | cd ${{ env.DEPLOY_DIR }} - docker-compose --profile test up -d --no-build api-test + docker compose --profile test up -d --no-build api-test - name: Health check run: | @@ -170,7 +170,7 @@ jobs: docker tag duoqi-api:prod duoqi-api:rollback 2>/dev/null || true # 滚动更新 - docker-compose up -d --no-build api-prod + docker compose up -d --no-build api-prod - name: Health check run: | @@ -188,7 +188,7 @@ jobs: echo "Health check failed! Rolling back..." cd ${{ env.DEPLOY_DIR }} docker tag duoqi-api:rollback duoqi-api:prod - docker-compose up -d --no-build api-prod + docker compose up -d --no-build api-prod exit 1 - name: Cleanup diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml index 491b293..2603c60 100644 --- a/docker-compose.prod.yml +++ b/docker-compose.prod.yml @@ -3,9 +3,9 @@ # 包含生产环境和测试环境(按需启停) # # 用法: -# 生产环境:docker-compose up -d -# 含测试: docker-compose --profile test up -d -# 停止测试:docker-compose --profile test stop api-test +# 生产环境:docker compose up -d +# 含测试: docker compose --profile test up -d +# 停止测试:docker compose --profile test stop api-test # ======================================== version: '3.8' diff --git a/docs/ci-deployment-guide.md b/docs/ci-deployment-guide.md index 94fc671..6ed90fb 100644 --- a/docs/ci-deployment-guide.md +++ b/docs/ci-deployment-guide.md @@ -108,7 +108,7 @@ dnf update -y dnf install -y curl git nginx certbot python3-certbot-nginx # 3. 安装 Docker(Alibaba Cloud Linux 内置 Docker 源) -dnf install -y docker docker-compose +dnf install -y docker docker-compose-plugin systemctl enable --now docker # 4. 配置防火墙(firewalld) @@ -243,7 +243,7 @@ services: max-file: "3" EOF -cd /opt/gitea && docker-compose up -d +cd /opt/gitea && docker compose up -d ``` > **注意**: Docker 方式会额外占用 ~50MB 内存(容器运行时开销),仅当需要快速试用或测试时使用。 @@ -460,17 +460,17 @@ services: ```bash # 只启动生产环境(默认) -docker-compose up -d +docker compose up -d # 启动生产 + 测试环境 -docker-compose --profile test up -d +docker compose --profile test up -d # 停止测试环境(释放内存) -docker-compose --profile test stop api-test +docker compose --profile test stop api-test # 重新构建并启动 -docker-compose up -d --build api-prod -docker-compose --profile test up -d --build api-test +docker compose up -d --build api-prod +docker compose --profile test up -d --build api-test ``` ### CI/CD 流程 @@ -806,19 +806,19 @@ services: ```bash # 查看所有容器状态 -docker-compose ps +docker compose ps # 查看生产日志 -docker-compose logs -f api-prod +docker compose logs -f api-prod # 查看测试日志 -docker-compose -f docker-compose.yml --profile test logs -f api-test +docker compose --profile test logs -f api-test # 重启生产环境 -docker-compose restart api-prod +docker compose restart api-prod # 进入容器调试 -docker-compose exec api-prod sh +docker compose exec api-prod sh # 查看资源使用 docker stats --no-stream @@ -831,10 +831,10 @@ docker stats --no-stream mysql -h your-rds-endpoint -u duoqi_test -p -e "DROP DATABASE duoqi_test; CREATE DATABASE duoqi_test CHARACTER SET utf8mb4;" # 执行迁移 -docker-compose exec api-prod npx drizzle-kit migrate +docker compose exec api-prod npx drizzle-kit migrate # 导入种子数据到测试库 -docker-compose --profile test exec api-test bun run db:seed +docker compose --profile test exec api-test bun run db:seed # 备份生产库 mysqldump -h your-rds-endpoint -u duoqi_prod -p duoqi_prod > /opt/backups/duoqi_prod_$(date +%Y%m%d).sql @@ -884,7 +884,7 @@ echo "0 2 * * * /opt/backups/backup.sh >> /opt/backups/backup.log 2>&1" | cronta free -h # 停止测试环境释放内存 -docker-compose --profile test stop api-test +docker compose --profile test stop api-test # 清理 Docker 缓存 docker system prune -f @@ -897,10 +897,10 @@ docker system df ```bash # 查看退出日志 -docker-compose logs api-prod +docker compose logs api-prod # 检查环境变量 -docker-compose config +docker compose config # 检查端口冲突 netstat -tlnp | grep -E '3000|3001' @@ -937,9 +937,9 @@ docker images | grep duoqi-api # 回滚到上一个版本 cd /opt/duoqi-api -docker-compose down api-prod +docker compose down api-prod # 修改 docker-compose.yml 使用指定版本镜像 -docker-compose up -d api-prod +docker compose up -d api-prod ``` --- diff --git a/scripts/deploy.sh b/scripts/deploy.sh index c761aad..7c40145 100644 --- a/scripts/deploy.sh +++ b/scripts/deploy.sh @@ -25,8 +25,8 @@ cd "$DEPLOY_DIR" 2>/dev/null || { case "$COMMAND" in prod) echo "=== Building and deploying production ===" - docker-compose build api-prod - docker-compose up -d api-prod + docker compose build api-prod + docker compose up -d api-prod echo "Waiting for health check..." sleep 15 if curl -sf http://localhost:3000/health > /dev/null; then @@ -39,8 +39,8 @@ case "$COMMAND" in test) echo "=== Building and deploying test ===" - docker-compose build api-test - docker-compose --profile test up -d api-test + docker compose build api-test + docker compose --profile test up -d api-test echo "Waiting for health check..." sleep 10 if curl -sf http://localhost:3001/health > /dev/null; then @@ -53,14 +53,14 @@ case "$COMMAND" in test-stop) echo "=== Stopping test environment ===" - docker-compose --profile test stop api-test + docker compose --profile test stop api-test echo "✓ Test environment stopped" free -h | head -2 ;; status) echo "=== Container Status ===" - docker-compose ps + docker compose ps echo "" echo "=== Memory Usage ===" free -h | head -2 @@ -73,7 +73,7 @@ case "$COMMAND" in echo "=== Rolling back production ===" if docker images | grep -q "duoqi-api:rollback"; then docker tag duoqi-api:rollback duoqi-api:prod - docker-compose up -d --no-build api-prod + docker compose up -d --no-build api-prod echo "✓ Rollback completed!" else echo "✗ No rollback image found!" @@ -84,9 +84,9 @@ case "$COMMAND" in logs) ENV="${2:-prod}" if [ "$ENV" = "test" ]; then - docker-compose --profile test logs -f --tail=100 api-test + docker compose --profile test logs -f --tail=100 api-test else - docker-compose logs -f --tail=100 api-prod + docker compose logs -f --tail=100 api-prod fi ;;