29 lines
894 B
Docker
29 lines
894 B
Docker
|
|
# ============================================================
|
|||
|
|
# Flask 后端 Dockerfile
|
|||
|
|
# 基于 Python 3.12 Alpine(精简镜像,约 50MB)
|
|||
|
|
# ============================================================
|
|||
|
|
FROM python:3.12-alpine
|
|||
|
|
|
|||
|
|
# 设置工作目录
|
|||
|
|
WORKDIR /app
|
|||
|
|
|
|||
|
|
# 先复制依赖文件(利用 Docker 缓存层,代码改动时不用重装依赖)
|
|||
|
|
COPY requirements.txt .
|
|||
|
|
|
|||
|
|
# 安装 Python 依赖
|
|||
|
|
# --no-cache-dir: 不缓存 pip 包,减小镜像体积
|
|||
|
|
RUN pip install --no-cache-dir -r requirements.txt
|
|||
|
|
|
|||
|
|
# 复制应用代码
|
|||
|
|
COPY . .
|
|||
|
|
|
|||
|
|
# 创建数据目录(SQLite 数据库文件存放位置)
|
|||
|
|
RUN mkdir -p /app/data
|
|||
|
|
|
|||
|
|
# 暴露端口(Flask 默认 5000)
|
|||
|
|
EXPOSE 5000
|
|||
|
|
|
|||
|
|
# 启动命令:初始化数据库 + 启动 Flask
|
|||
|
|
# waitress-serve 是生产级 WSGI 服务器,比 flask run 更稳定
|
|||
|
|
CMD ["sh", "-c", "python seed_data.py && python -m flask run --host=0.0.0.0 --port=5000"]
|