From 0b72e7040f290abeafc5cf7b35456d80962f3645 Mon Sep 17 00:00:00 2001 From: OoO Date: Tue, 28 Apr 2026 14:40:03 +0800 Subject: [PATCH] fix(post-3.5g): Dockerfile CMD restore gunicorn 4-workers (HIGH-5) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 從 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) --- Dockerfile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index d2ba1a2..86d5db3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -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 綁 80,docker-compose / k8s 對外映射依環境而定) +EXPOSE 80 -# 啟動應用 -CMD ["python", "app.py"] +# 啟動應用(production 用 gunicorn,4 workers + 300s timeout + 啟用 access/error log) +CMD ["gunicorn", "--bind", "0.0.0.0:80", "--workers", "4", "--timeout", "300", "--access-logfile", "-", "--error-logfile", "-", "app:app"]