xp / Dockerfile
99i's picture
Upload Dockerfile
4d6d82c verified
# 构建阶段
FROM python:3.11-slim as builder
# 设置工作目录
WORKDIR /app
# 复制依赖文件
COPY requirements.txt .
# 安装依赖
RUN pip install --no-cache-dir -r requirements.txt
# 运行阶段
FROM python:3.11-slim
# 设置工作目录
WORKDIR /app
# 从构建阶段复制安装的依赖
COPY --from=builder /usr/local/lib/python3.11/site-packages/ /usr/local/lib/python3.11/site-packages/
# 复制应用程序文件
COPY main.py .
COPY templates/ templates/
# 创建上传文件目录并设置权限
RUN mkdir -p uploads && \
chmod 755 uploads
# 设置环境变量
ENV PYTHONUNBUFFERED=1
# 暴露端口
EXPOSE 8000
# 设置健康检查
HEALTHCHECK --interval=30s --timeout=3s \
CMD curl -f http://localhost:8000/ || exit 1
# 创建非root用户
RUN useradd -m -u 1000 appuser && \
chown -R appuser:appuser /app
# 切换到非root用户
USER appuser
# 设置数据卷
VOLUME ["/app/uploads"]
# 启动应用
CMD ["python", "-m", "uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]