Update celery related docker container independence (#943)

* Update celery related docker container independence

* Fix lint

* Fix nginx conf
This commit is contained in:
Wu Clan
2025-11-28 18:33:32 +08:00
committed by GitHub
parent 7641d5993a
commit 5a49d20c9b
9 changed files with 112 additions and 61 deletions

View File

@@ -49,20 +49,36 @@ RUN mkdir -p /var/log/fba
EXPOSE 8001
CMD ["/usr/local/bin/granian", "main:app", "--interface", "asgi", "--host", "0.0.0.0", "--port","8000"]
CMD ["supervisord", "-c", "/etc/supervisor/supervisord.conf"]
# === Celery server image ===
FROM base_server AS fba_celery
# === Celery Worker image ===
FROM base_server AS fba_celery_worker
COPY deploy/backend/fba_celery.conf /etc/supervisor/conf.d/
COPY deploy/backend/fba_celery_worker.conf /etc/supervisor/conf.d/
RUN mkdir -p /var/log/fba
RUN chmod +x celery-start.sh
CMD ["supervisord", "-c", "/etc/supervisor/supervisord.conf"]
# === Celery Beat image ===
FROM base_server AS fba_celery_beat
COPY deploy/backend/fba_celery_beat.conf /etc/supervisor/conf.d/
RUN mkdir -p /var/log/fba
CMD ["supervisord", "-c", "/etc/supervisor/supervisord.conf"]
# === Celery Flower image ===
FROM base_server AS fba_celery_flower
COPY deploy/backend/fba_celery_flower.conf /etc/supervisor/conf.d/
RUN mkdir -p /var/log/fba
EXPOSE 8555
CMD ["./celery-start.sh"]
CMD ["supervisord", "-c", "/etc/supervisor/supervisord.conf"]
# Build image
FROM ${SERVER_TYPE}

View File

@@ -16,8 +16,7 @@
如果你想对任务进行目录层级划分,使任务结构更加清晰,你可以新建任意目录,但必须注意的是
1.`backend/app/task/tasks` 目录下新建 python 包目录
2. 新建目录,务必更新 `conf.py` 配置中的 `CELERY_TASKS_PACKAGES`,将新建目录模块路径添加到此列表
3. 在新建目录下,务必添加 `tasks.py` 文件,并在此文件中编写相关任务代码
2. 新建目录,务必添加 `tasks.py` 文件,并在此文件中编写相关任务代码
## 消息代理

View File

@@ -1,10 +0,0 @@
#!/usr/bin/env bash
# work && beat
celery -A backend.app.task.celery worker -l info -P gevent -c 100 &
# beat
celery -A backend.app.task.celery beat -l info &
# flower
celery -A backend.app.task.celery flower --port=8555 --basic-auth=admin:123456

View File

@@ -1,35 +0,0 @@
[program:fba_celery_worker]
directory=/fba/backend
command=/usr/local/bin/celery -A app.task.celery worker -P gevent -c 1000 --loglevel=INFO
user=root
autostart=true
autorestart=true
startretries=5
redirect_stderr=true
stdout_logfile=/var/log/fba/fba_celery_worker.log
stdout_logfile_maxbytes=5MB
stdout_logfile_backups=5
[program:fba_celery_beat]
directory=/fba/backend
command=/usr/local/bin/celery -A app.task.celery beat --loglevel=INFO
user=root
autostart=true
autorestart=true
startretries=5
redirect_stderr=true
stdout_logfile=/var/log/fba/fba_celery_beat.log
stdout_logfile_maxbytes=5MB
stdout_logfile_backups=5
[program:fba_celery_flower]
directory=/fba/backend
command=/usr/local/bin/celery -A app.task.celery flower --port=8555 --url-prefix=flower --basic-auth=admin:123456
user=root
autostart=true
autorestart=true
startretries=5
redirect_stderr=true
stdout_logfile=/var/log/fba/fba_celery_flower.log
stdout_logfile_maxbytes=5MB
stdout_logfile_backups=5

View File

@@ -0,0 +1,11 @@
[program:fba_celery_beat]
directory=/fba/backend
command=/usr/local/bin/celery -A app.task.celery beat --loglevel=INFO
user=root
autostart=true
autorestart=true
startretries=5
redirect_stderr=true
stdout_logfile=/var/log/fba/fba_celery_beat.log
stdout_logfile_maxbytes=5MB
stdout_logfile_backups=5

View File

@@ -0,0 +1,11 @@
[program:fba_celery_flower]
directory=/fba/backend
command=/usr/local/bin/celery -A app.task.celery flower --port=8555 --url-prefix=flower --basic-auth=admin:123456
user=root
autostart=true
autorestart=true
startretries=5
redirect_stderr=true
stdout_logfile=/var/log/fba/fba_celery_flower.log
stdout_logfile_maxbytes=5MB
stdout_logfile_backups=5

View File

@@ -0,0 +1,11 @@
[program:fba_celery_worker]
directory=/fba/backend
command=/usr/local/bin/celery -A app.task.celery worker -P gevent -c 1000 --loglevel=INFO
user=root
autostart=true
autorestart=true
startretries=5
redirect_stderr=true
stdout_logfile=/var/log/fba/fba_celery_worker.log
stdout_logfile_maxbytes=5MB
stdout_logfile_backups=5

View File

@@ -31,7 +31,7 @@ server {
}
location /flower/ {
proxy_pass http://fba_server:8555;
proxy_pass http://fba_celery_flower:8555;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;

View File

@@ -34,7 +34,6 @@ services:
depends_on:
- fba_postgres
- fba_redis
- fba_celery
volumes:
- ./deploy/backend/docker-compose/.env.server:/fba/backend/.env
- fba_static:/fba/backend/app/static
@@ -167,16 +166,15 @@ services:
networks:
- fba_network
fba_celery:
fba_celery_worker:
build:
context: .
dockerfile: Dockerfile
args:
- SERVER_TYPE=fba_celery
image: fba_celery:latest
ports:
- "8555:8555"
container_name: fba_celery
- SERVER_TYPE=fba_celery_worker
image: fba_celery_worker:latest
# 如果你需要分布式部署 Worker则必须移除此 container_name 配置
container_name: fba_celery_worker
restart: always
depends_on:
- fba_rabbitmq
@@ -191,3 +189,53 @@ services:
wait-for-it -s fba_rabbitmq:5672 -t 300
supervisord -c /etc/supervisor/supervisord.conf
supervisorctl restart
fba_celery_beat:
build:
context: .
dockerfile: Dockerfile
args:
- SERVER_TYPE=fba_celery_beat
image: fba_celery_beat:latest
container_name: fba_celery_beat
restart: always
depends_on:
- fba_rabbitmq
- fba_celery_worker
volumes:
- ./deploy/backend/docker-compose/.env.server:/fba/backend/.env
networks:
- fba_network
command:
- bash
- -c
- |
wait-for-it -s fba_rabbitmq:5672 -t 300
supervisord -c /etc/supervisor/supervisord.conf
supervisorctl restart
fba_celery_flower:
build:
context: .
dockerfile: Dockerfile
args:
- SERVER_TYPE=fba_celery_flower
image: fba_celery_flower:latest
ports:
- "8555:8555"
container_name: fba_celery_flower
restart: always
depends_on:
- fba_rabbitmq
- fba_celery_worker
volumes:
- ./deploy/backend/docker-compose/.env.server:/fba/backend/.env
networks:
- fba_network
command:
- bash
- -c
- |
wait-for-it -s fba_rabbitmq:5672 -t 300
supervisord -c /etc/supervisor/supervisord.conf
supervisorctl restart