Files
geMoldInsight/deploy/Dockerfile.celery
T

15 lines
1004 B
Docker
Raw Normal View History

# Celery Worker 与 unified 后端共用同一运行时镜像(自包含,批次 1 起)。
# 此前 FROM gemold-moldinsight:latest 与 compose/build.sh 构建的
# gemold-backend:latest 不一致,干净环境下 celery 镜像构建必然失败。
FROM gemold-backend:latest
2026-05-29 18:19:30 +08:00
# 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"]