# Celery Worker 与 unified 后端共用同一运行时镜像(自包含,批次 1 起)。 # 此前 FROM gemold-moldinsight:latest 与 compose/build.sh 构建的 # gemold-backend:latest 不一致,干净环境下 celery 镜像构建必然失败。 FROM gemold-backend:latest # OCC 并行度伸缩(OCC_THROUGHPUT 方案 A,见 docs/topics/performance/OCC_THROUGHPUT.md): # 每个 prefork 子进程各持一个串行 OCC 通道,concurrency 即并行分析数 # (调大时预算好每子进程内存与 PG 连接数);max-tasks-per-child 让子进程 # 定期重启,兜底回收 OCC 超时后滞留的线程。可在 compose/.env 覆盖。 ENV CELERY_CONCURRENCY=2 \ CELERY_MAX_TASKS_PER_CHILD=50 # sh -c + exec:既支持环境变量替换,又让 celery exec 接管 PID 1 正确接收 SIGTERM CMD ["sh", "-c", "exec celery -A celery_app worker --workdir=/app/src --concurrency=${CELERY_CONCURRENCY:-2} --max-tasks-per-child=${CELERY_MAX_TASKS_PER_CHILD:-50} --loglevel=info"]