Spaces:
Paused
Paused
| # ─── 构建阶段:使用 uv 安装依赖 ─── | |
| FROM python:3.11-slim AS builder | |
| # 安装 uv | |
| COPY --from=ghcr.io/astral-sh/uv:latest /uv /usr/local/bin/uv | |
| WORKDIR /app | |
| # 先复制依赖清单,利用 Docker 缓存 | |
| COPY pyproject.toml uv.lock .python-version ./ | |
| # 安装依赖到 .venv(离线锁定) | |
| RUN uv sync --frozen --no-install-project | |
| # ─── 运行阶段 ─── | |
| FROM python:3.11-slim | |
| WORKDIR /app | |
| # 从构建阶段复制虚拟环境 | |
| COPY --from=builder /app/.venv /app/.venv | |
| # 复制项目文件 | |
| COPY . . | |
| COPY data/config.json /app/config.json | |
| # 设置环境变量 | |
| ENV PATH="/app/.venv/bin:$PATH" \ | |
| PYTHONUNBUFFERED=1 | |
| # 创建数据目录(持久化挂载点) | |
| RUN mkdir -p /app/codex_tokens /app/logs | |
| EXPOSE 8080 | |
| CMD ["python", "-m", "uvicorn", "web_app:app", "--host", "0.0.0.0", "--port", "8080"] | |