Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 9 additions & 3 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,11 @@ jobs:
# 构建新镜像(失败则整个 workflow 标红,旧容器不受影响)
docker build -t involutionhell-backend:latest .

# 用新镜像重启服务
docker compose up -d --remove-orphans
# 用新镜像重启服务。
# --force-recreate 是必须的:compose 看 image 名(始终是 :latest)没变就不会重建容器,
# 结果 CI 的 docker build 虽然把 :latest 标签指向新 sha,但运行中容器仍绑死老 sha,
# 部署一直 "success" 但实际 JAR 没换。用 --force-recreate backend 强制销毁重建。
docker compose up -d --remove-orphans --force-recreate backend
Comment on lines +44 to +48

Copilot AI Apr 17, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

既然这里明确说明 --force-recreate 是必须的(否则容器会继续绑定旧 sha),回滚分支里把 rollback tag 回 latest 后同样会遇到“image 名没变 → 不重建容器”的问题。建议回滚路径的 docker compose up 也对 backend 使用同样的 --force-recreate(必要时加 --no-deps 以避免影响依赖服务)。

Copilot uses AI. Check for mistakes.

# 等待服务启动,最多 60 秒
echo "等待服务健康检查..."
Expand All @@ -68,6 +71,9 @@ jobs:
# 用备份镜像回滚
echo "❌ 健康检查失败,正在回滚到上一个版本..."
docker tag involutionhell-backend:rollback involutionhell-backend:latest
docker compose up -d --remove-orphans
# 回滚同样需要 --force-recreate:rollback tag 覆盖回 latest 后 image 名依旧是 :latest,
# compose 看不出变化就不会重建容器,运行中容器仍绑死着失败那版的 sha,回滚等于没回。
# --no-deps 避免顺带重建 postgres 等依赖服务,减小爆炸半径。
docker compose up -d --remove-orphans --force-recreate --no-deps backend
echo "回滚完成,workflow 标红以提示本次部署失败"
exit 1
5 changes: 5 additions & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,11 @@ services:
AUTH_GITHUB_ID: ${AUTH_GITHUB_ID:-}
AUTH_GITHUB_SECRET: ${AUTH_GITHUB_SECRET:-}
AUTH_SECRET: ${AUTH_SECRET:-}
# OAuth 回调前缀:JustAuth 的 redirect-uri 用 ${AUTH_URL:http://localhost:3000}/api/auth/callback/github
# 拼接(见 application.properties)。当前 compose 已通过 env_file: .env 和
# environment 把 AUTH_URL 注入容器;如果生产上仍是旧值/回退到 localhost,
# 通常是因为容器未重建,环境变量变更需要 recreate 后才会生效,否则会报 redirect_uri_mismatch。
AUTH_URL: ${AUTH_URL:-https://involutionhell.com}
# AI 模型(默认 GLM-4.6V-Flash 免费 fallback,OpenAI 兼容协议)
# 变量名沿用 OPENAI_*:Java 用的是 /chat/completions 规范协议,URL+Key+Model
# 三件套指哪打哪,OpenAI / 智谱 / Anthropic-compat 任选,无需改代码。
Expand Down