feat(deploy): v0.7.0-alpha 部署后改进(防御性构建 + 兼容层)
4 个文件解决 v0.7.0-alpha 部署中暴露的 3 个棘手问题:
1. backend/.dockerignore (新增)
- 排除 .env / .env.* 防 pydantic-settings 覆盖 compose 注入
- 排除 *.bak / *.db / *.log 防开发副产物进镜像
- 排除 .git / .claude / docs / tests 等非运行时文件
- 缩小最终镜像体积
2. backend/Dockerfile (修改)
- ENV PYTHONPATH=/app:修 alembic 1.13+ 不再默认 prepend cwd 的 bug
- RUN rm -f /app/.env /app/.env.*:防御性双保险(就算 .dockerignore 漏了)
3. backend/app/db.py (新增,兼容层)
- 解决 main.py 第 98 行 from app.db import get_session_factory 失败
- 一行别名:from app.database import _get_session_factory as get_session_factory
4. backend/scripts/post-deploy-healthcheck.sh (新增)
- 6 项部署后自动健康检查:
* alembic_version 行数 = 1
* 后端 /api/health HTTP 200
* 关键表(roles/permissions/troubleshooting_flows)存在
* Redis ping OK
* 4 个域名全 200
* nginx 无 ERROR 日志
- 任何一项失败立即 exit 1,方便 CI 集成
相关:memory/v070-alpha-deploy-runbook.md (9 个棘手问题 + 5 项改进)
关联:#191、#192、#200、#201
This commit is contained in:
+10
-1
@@ -45,12 +45,21 @@ RUN apt-get update && \
|
||||
# 设置工作目录
|
||||
WORKDIR /app
|
||||
|
||||
# 🔧 v0.7.0-alpha 修复:显式设置 PYTHONPATH
|
||||
# 原因:alembic 1.13+ 不默认 prepend cwd,导致 `from app.config import settings` 失败
|
||||
# 关联:memory/docker-dev-alembic-pythonpath.md(同样问题 dev 环境也中招)
|
||||
ENV PYTHONPATH=/app
|
||||
|
||||
# 从构建阶段复制已安装的 Python 包
|
||||
COPY --from=builder /usr/local/lib/python3.12/site-packages /usr/local/lib/python3.12/site-packages
|
||||
COPY --from=builder /usr/local/bin /usr/local/bin
|
||||
|
||||
# 复制项目代码
|
||||
# 复制项目代码(排除 .env 和 .env.*,避免覆盖 docker-compose 注入的环境变量)
|
||||
COPY . .
|
||||
# 删除可能被 COPY 进镜像的开发 .env
|
||||
# 原因:pydantic-settings 会优先读 /app/.env,会覆盖 compose 的 environment 块
|
||||
# 关联:memory/v070-alpha-backend-env-override-bug.md
|
||||
RUN rm -f /app/.env /app/.env.* || true
|
||||
|
||||
# 暴露端口
|
||||
EXPOSE 8000
|
||||
|
||||
Reference in New Issue
Block a user