# 使用官方 uv 预装的 Python 镜像 FROM docker.1ms.run/astral/uv:python3.12-bookworm-slim # 设置工作目录 WORKDIR /app # 设置环境变量 ENV PYTHONUNBUFFERED=1 ENV PYTHONDONTWRITEBYTECODE=1 ENV UV_CACHE_DIR=/tmp/uv-cache # 创建非 root 用户 RUN groupadd -r appuser && useradd -r -g appuser appuser # 复制项目依赖文件 COPY pyproject.toml uv.lock ./ # 安装依赖 RUN uv sync --frozen --no-dev # 复制应用代码 COPY . . # 更改文件所有权 RUN chown -R appuser:appuser /app # 切换到非 root 用户 USER appuser # 暴露端口 EXPOSE 8000 # 健康检查 HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \ CMD curl -f http://localhost:8000/health || exit 1 # 启动命令 - 使用 uvicorn 生产模式 CMD ["uv", "run", "uvicorn", "api.main:app", "--host", "0.0.0.0", "--port", "8000", "--workers", "4"]