Files
meijiaka-zy/python-api/Dockerfile
T
小鱼开发 5f3d414a48 chore: 对齐测试与生产 Docker 配置
- 新增 .dockerignore,减少构建上下文体积
- 修复 Dockerfile 缺失 config/ 目录复制
- docker-compose.test.yml: DEBUG=false, ENV=production, SECRET_KEY 强制传入
- 新增 docker-compose.dev.yml(开发专用)和 docker-compose.prod.yml(生产专用)
- deploy-test.sh: 加入 SECRET_KEY 强制检查,统一步骤编号
2026-04-27 12:33:06 +08:00

46 lines
1.1 KiB
Docker

# 美家卡智影 API - Docker 镜像 (使用 uv 优化)
# ===========================================
FROM ghcr.io/astral-sh/uv:python3.13-bookworm-slim AS builder
# 设置 uv 环境变量
ENV UV_COMPILE_BYTECODE=1 \
UV_LINK_MODE=copy \
UV_PYTHON_DOWNLOADS=never
WORKDIR /app
# 先复制锁定文件,利用 Docker 缓存层
COPY requirements.lock pyproject.toml ./
# 创建虚拟环境并安装依赖(利用 uv 的速度优势)
RUN uv venv /opt/venv && \
uv pip sync --python /opt/venv/bin/python requirements.lock
# 复制应用代码
COPY app/ ./app/
# 安装应用本身(不安装 dev 依赖)
RUN uv pip install --python /opt/venv/bin/python --no-deps -e .
# ===== 生产镜像 =====
FROM python:3.13-slim AS production
ENV PYTHONDONTWRITEBYTECODE=1 \
PYTHONUNBUFFERED=1 \
PATH="/opt/venv/bin:$PATH"
# 从 builder 复制虚拟环境
COPY --from=builder /opt/venv /opt/venv
WORKDIR /app
# 复制应用代码和配置
COPY app/ ./app/
COPY config/ ./config/
COPY pyproject.toml .
EXPOSE 8000
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"]