# ============================================================ # API Dockerfile - FastAPI 应用 # 优化:从预构建基础镜像开始,仅叠加业务代码 # 基础镜像包含所有系统依赖和 Python 依赖,构建时间 < 5 分钟 # ============================================================ FROM xiaoxia-registry.cn-hangzhou.cr.aliyuncs.com/xiaoxiakeji/saas-api-base:latest # 构建参数:版本号(CI 传入 commit hash) ARG APP_VERSION=dev # 设置工作目录 WORKDIR /app # 复制应用代码(按变化频率从低到高排序,最大化层缓存命中) COPY alembic.ini ./alembic.ini COPY migrations/ ./migrations/ COPY alembic/ ./alembic/ COPY scripts/ ./scripts/ COPY packages/ ./packages/ COPY apps/api/ ./apps/api/ # 设置环境变量 ENV PATH="/opt/venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" ENV PYTHONPATH=/app:/app/apps/api ENV PYTHONUNBUFFERED=1 ENV APP_VERSION=$APP_VERSION # 健康检查 HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \ CMD python -c "import urllib.request; urllib.request.urlopen('http://localhost:8000/health', timeout=5)" # API 入口点 CMD ["uvicorn", "apps.api.main:app", "--host", "0.0.0.0", "--port", "8000"]