From 99c4bc3ad54b5af786fdb4deed5d41209410c8a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=94=A8=E6=88=B7CI=20Test?= Date: Fri, 10 Jul 2026 15:56:35 +0800 Subject: [PATCH] =?UTF-8?q?feat(worker):=20=E6=94=AF=E6=8C=81=20WORKER=5FC?= =?UTF-8?q?ONCURRENCY=20=E7=8E=AF=E5=A2=83=E5=8F=98=E9=87=8F=E6=8E=A7?= =?UTF-8?q?=E5=88=B6=20Celery=20=E5=B9=B6=E5=8F=91=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 infra/docker/entrypoint-worker.sh 启动脚本 - WORKER_CONCURRENCY 环境变量未设置时默认为 2(向后兼容) - worker.Dockerfile CMD 改为使用 entrypoint 脚本 - 解决 Watchtower 自动更新丢失 docker run --override 的问题 --- infra/docker/entrypoint-worker.sh | 13 +++++++++++++ infra/docker/worker.Dockerfile | 6 +++++- 2 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 infra/docker/entrypoint-worker.sh 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"] -- 2.54.0