33 lines
1011 B
Docker
33 lines
1011 B
Docker
# 使用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"] |