# 使用python:3.12-slim 镜像作为基础镜像 FROM python:3.12-slim # 使用 LABEL 替代 MAINTAINER LABEL maintainer="948080782@qq.com" # 设置时区 ENV TZ Asia/Shanghai # 设置容器内工作目录 WORKDIR /home # 复制依赖清单并安装 COPY ./backend/requirements.txt . RUN pip install --no-cache-dir -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple # 复制整个后端代码进镜像(镜像自包含,生产不依赖宿主机代码挂载) COPY ./backend/ . # 创建非 root 运行用户(固定 uid/gid 1001,与 docker-compose 的 user: "1001:1001" 对应), # 授权 /home 供日志(logs)、上传目录(static/upload)写入 RUN addgroup --system --gid 1001 app \ && adduser --system --uid 1001 --ingroup app --home /home app \ && chown -R app:app /home # 暴露端口 EXPOSE 8001 # 切换非 root 用户运行(应用被攻破时不以 root 执行,降低容器逃逸风险) USER app # 运行应用 CMD ["python", "main.py", "run", "--env=prod"]