fix(post-3.5g): Dockerfile CMD restore gunicorn 4-workers (HIGH-5)
All checks were successful
CD Pipeline / deploy (push) Successful in 9m13s

從 4349db2~1 撈回 production 啟動指令。

問題:
- 4349db2 改回 `CMD ["python", "app.py"]` 用 Flask dev server 跑 production,
  單進程、無 worker pool、debug 邏輯保留、效能與安全都不適合對外。
- EXPOSE 5000 與 docker-compose / k8s 實際使用 port 80 不符
  (reference_docker_topology.md 確認 momo-pro-system 是 port 80)。

修法:
- CMD 改回:gunicorn --bind 0.0.0.0:80 --workers 4 --timeout 300
  --access-logfile - --error-logfile - app:app
- EXPOSE 5000 → EXPOSE 80(對齊容器內實際綁定)
- requirements.txt 已含 gunicorn>=20.1,build 不需要其他改動

驗證:
- grep 確認 CMD 與 EXPOSE 已更新
- gunicorn 在 requirements.txt 中(line 不需求動)

Critic finding: HIGH-5
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
OoO
2026-04-28 14:40:03 +08:00
parent d276853e54
commit 0b72e7040f

View File

@@ -61,8 +61,8 @@ RUN rm -rf /app/components && ln -sf /app/templates/components /app/components
ENV PYTHONUNBUFFERED=1
ENV FLASK_APP=app.py
# 暴露端口
EXPOSE 5000
# 暴露端口(容器內 app 綁 80docker-compose / k8s 對外映射依環境而定)
EXPOSE 80
# 啟動應用
CMD ["python", "app.py"]
# 啟動應用production 用 gunicorn4 workers + 300s timeout + 啟用 access/error log
CMD ["gunicorn", "--bind", "0.0.0.0:80", "--workers", "4", "--timeout", "300", "--access-logfile", "-", "--error-logfile", "-", "app:app"]