Spaces:
Sleeping
Sleeping
| # ============================================ | |
| # 红墨 AI图文生成器 - Docker 镜像 | |
| # ============================================ | |
| # 阶段1: 构建前端 | |
| FROM node:22-slim AS frontend-builder | |
| WORKDIR /app/frontend | |
| # 安装 pnpm | |
| RUN npm install -g pnpm | |
| # 复制前端依赖文件 | |
| COPY frontend/package.json frontend/pnpm-lock.yaml ./ | |
| # 安装依赖 | |
| RUN pnpm install --frozen-lockfile | |
| # 复制前端源码 | |
| COPY frontend/ ./ | |
| # 构建前端 | |
| RUN pnpm build | |
| # ============================================ | |
| # 阶段2: 最终镜像 | |
| FROM python:3.11-slim | |
| WORKDIR /app | |
| # 安装系统依赖 | |
| RUN apt-get update && apt-get install -y --no-install-recommends \ | |
| && rm -rf /var/lib/apt/lists/* | |
| # 安装 uv | |
| RUN pip install --no-cache-dir uv | |
| # 复制 Python 项目配置 | |
| COPY pyproject.toml uv.lock* ./ | |
| # 安装 Python 依赖 | |
| RUN uv sync --no-dev | |
| # 复制后端代码 | |
| COPY backend/ ./backend/ | |
| # 复制空白配置文件模板(不包含任何 API Key) | |
| COPY docker/text_providers.yaml ./ | |
| COPY docker/image_providers.yaml ./ | |
| # 从构建阶段复制前端产物 | |
| COPY --from=frontend-builder /app/frontend/dist ./frontend/dist | |
| # 创建数据目录 | |
| RUN mkdir -p output history | |
| # 设置环境变量 | |
| ENV FLASK_DEBUG=False | |
| ENV FLASK_HOST=0.0.0.0 | |
| ENV FLASK_PORT=12398 | |
| # 暴露端口 | |
| EXPOSE 12398 | |
| # 健康检查 | |
| HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \ | |
| CMD python -c "import urllib.request; urllib.request.urlopen('http://localhost:12398/api/health')" || exit 1 | |
| # 启动命令 | |
| CMD ["uv", "run", "python", "-m", "backend.app"] | |