# 基础镜像:Python 3.11 轻量版 FROM python:3.11-slim # 设置工作目录(容器内) WORKDIR /app # 复制依赖清单并安装依赖(--no-cache-dir 避免缓存,减小镜像体积) COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt # 安装 gunicorn 用于生产环境运行 Flask RUN pip install --no-cache-dir gunicorn # 复制当前目录所有文件到容器的 /app 目录 COPY . . # 暴露容器端口(仅声明,不实际映射,映射由docker-compose/run命令控制) EXPOSE 8888 # 启动命令:gunicorn运行Flask应用(单行JSON格式,避免多行解析错误) # -w 4:Worker数(建议 2*CPU核心+1,根据服务器调整) # -b 0.0.0.0:8888:绑定地址和端口(0.0.0.0允许外部访问) # --timeout 300:Worker超时时间(解决长任务超时被杀死) # --graceful-timeout 300:优雅重启超时 # --worker-class gevent:异步worker(适合长任务/高并发,减少阻塞) # --worker-connections 1000:每个worker最大连接数 # --access-logfile -:访问日志输出到stdout(Docker可捕获) # --error-logfile -:错误日志输出到stdout # --log-level info:日志级别,方便排查问题 # app:app:Flask应用入口(第一个app是app.py文件,第二个app是文件内的Flask实例) CMD ["gunicorn", "-w", "2", "-b", "0.0.0.0:8888", "--timeout", "300", "--graceful-timeout", "300", "--worker-class", "gevent", "--worker-connections", "1000", "--access-logfile", "-", "--error-logfile", "-", "--log-level", "info", "app:app"]