# ============================================================ # Worker Dockerfile - 极简化 # 从预构建统一基础镜像开始,仅叠加业务代码 # 基础镜像包含:系统依赖 + 全部 Python 依赖 + CJK 字体 # 构建时间目标:< 5 分钟 # ============================================================ FROM xiaoxia-registry.cn-hangzhou.cr.aliyuncs.com/xiaoxiakeji/saas-worker-base:latest # 构建参数:版本号(CI 传入 commit hash) ARG APP_VERSION=dev # 创建非 root 用户 RUN groupadd -r celery \ && useradd -r -g celery -d /app -s /sbin/nologin celery \ && mkdir -p /app/generated \ && chown celery:celery /app/generated WORKDIR /app # 设置 Python 环境变量 ENV PATH="/opt/venv/bin:$PATH" ENV PYTHONPATH=/app:/app/packages ENV PYTHONUNBUFFERED=1 ENV APP_VERSION=$APP_VERSION # 复制文件(按变化频率从低到高排序,最大化层缓存命中) COPY alembic.ini /app/alembic.ini COPY migrations/ /app/migrations/ COPY packages/ /app/packages/ COPY apps/api/app/config.py /app/apps/api/app/config.py COPY apps/api/app/core/ /app/apps/api/app/core/ # Worker 启动脚本 COPY infra/docker/entrypoint-worker.sh /usr/local/bin/entrypoint-worker.sh RUN chmod +x /usr/local/bin/entrypoint-worker.sh # 业务代码(变化最频繁,放最后) COPY apps/worker/ /app/apps/worker/ USER celery WORKDIR /app/apps/worker CMD ["/usr/local/bin/entrypoint-worker.sh"]