docs: 记一个部署坑 —— 重建镜像后 up -d 不一定换容器

2026-10-18 部署礼包修复时实际踩到:`docker compose build` 出了新镜像
(ID 变了),`docker compose up -d douyu-login` 只打了句 Started,
容器仍是上一版(ps 显示 Up 11 hours,容器里搜不到新函数),差点把
「没生效」报成「部署成功」。

- AGENTS 坑 #10:重建过镜像就 `up -d --force-recreate <服务名>`
  (必须带服务名,不带会把 mysql 一起重建),部署后核对镜像 ID 或 grep 容器内新代码。
- 部署清单同步改命令(顺带给 `docker compose run` 补上 -T 与 </dev/null,
  同 AGENTS 坑 #5)。
This commit is contained in:
yml2213
2026-10-18 11:02:09 +08:00
parent 21f7ee3f3f
commit 26066858b6
2 changed files with 9 additions and 4 deletions
+5 -2
View File
@@ -64,10 +64,13 @@ PY
docker compose stop douyu-login
# 2) 跑迁移(实测 9 秒)
docker compose run --rm douyu-login alembic upgrade head
docker compose run --rm -T douyu-login alembic upgrade head </dev/null
# 3) 起新代码
docker compose up -d douyu-login
# ⚠️ **镜像重建过就必须 --force-recreate + 服务名**:2026-10-18 踩到
# 「build 出了新镜像,up -d 只打了句 Started,容器还在跑旧镜像」。
# 带服务名只会重建 app,不会连 mysql 一起重建(见 AGENTS 坑 #10)。
docker compose up -d --force-recreate douyu-login
```
**为什么先停应用**:迁移期间 `accounts.cookie` 还没回填完,此时旧代码在跑会