diff --git a/infra/docker/entrypoint-worker.sh b/infra/docker/entrypoint-worker.sh new file mode 100644 index 000000000..d03eb4bd1 --- /dev/null +++ b/infra/docker/entrypoint-worker.sh @@ -0,0 +1,13 @@ +#!/bin/bash +# Worker 启动脚本 — 支持 WORKER_CONCURRENCY 环境变量 +# 未设置时默认 2(保持向后兼容) + +set -e + +CONCURRENCY="${WORKER_CONCURRENCY:-2}" + +exec celery \ + -A worker_app.celery_app \ + worker \ + --loglevel=info \ + "--concurrency=${CONCURRENCY}" diff --git a/infra/docker/worker.Dockerfile b/infra/docker/worker.Dockerfile index 1822e2111..748688cd5 100755 --- a/infra/docker/worker.Dockerfile +++ b/infra/docker/worker.Dockerfile @@ -48,6 +48,10 @@ COPY packages/ /app/packages/ COPY alembic.ini /app/alembic.ini COPY migrations/ /app/migrations/ +# 复制 Worker 启动脚本(支持 WORKER_CONCURRENCY 环境变量) +COPY infra/docker/entrypoint-worker.sh /usr/local/bin/entrypoint-worker.sh +RUN chmod +x /usr/local/bin/entrypoint-worker.sh + # 设置 Python 路径 ENV PATH="/opt/venv/bin:$PATH" ENV PYTHONPATH=/app @@ -61,4 +65,4 @@ USER celery # Worker 入口点 WORKDIR /app/apps/worker -CMD ["celery", "-A", "worker_app.celery_app", "worker", "--loglevel=info", "--concurrency=2"] +CMD ["/usr/local/bin/entrypoint-worker.sh"]