mirror of
https://github.com/fastapi-practices/fastapi_best_architecture.git
synced 2026-03-13 09:31:31 +08:00
Update celery related docker container independence (#943)
* Update celery related docker container independence * Fix lint * Fix nginx conf
This commit is contained in:
28
Dockerfile
28
Dockerfile
@@ -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}
|
||||
|
||||
@@ -16,8 +16,7 @@
|
||||
如果你想对任务进行目录层级划分,使任务结构更加清晰,你可以新建任意目录,但必须注意的是
|
||||
|
||||
1. 在 `backend/app/task/tasks` 目录下新建 python 包目录
|
||||
2. 新建目录后,务必更新 `conf.py` 配置中的 `CELERY_TASKS_PACKAGES`,将新建目录模块路径添加到此列表
|
||||
3. 在新建目录下,务必添加 `tasks.py` 文件,并在此文件中编写相关任务代码
|
||||
2. 在新建目录下,务必添加 `tasks.py` 文件,并在此文件中编写相关任务代码
|
||||
|
||||
## 消息代理
|
||||
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
11
deploy/backend/fba_celery_beat.conf
Normal file
11
deploy/backend/fba_celery_beat.conf
Normal 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
|
||||
11
deploy/backend/fba_celery_flower.conf
Normal file
11
deploy/backend/fba_celery_flower.conf
Normal 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
|
||||
11
deploy/backend/fba_celery_worker.conf
Normal file
11
deploy/backend/fba_celery_worker.conf
Normal 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
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user