docker celery用Supervisor守护
时间: 2024-10-10 16:09:32 浏览: 33
在Docker容器中使用Celery任务队列服务并配合Supervisor作为守护进程,可以确保Celery在容器重启时能够自动恢复任务处理。以下是一个简单的步骤说明:
1. **安装依赖**:
- 首先,在Dockerfile中添加Celery、Celery Beat(定时任务)以及Supervisor所需的Python库。
```dockerfile
RUN pip install celery[redis] supervisor
```
2. **配置 Celery**:
- 创建一个celeryconfig.py文件,设置Celery的broker(如Redis)和backend,以及其它必要的配置项。
```python
# celeryconfig.py
import os
CELERY_BROKER_URL = 'redis://localhost:6379/0'
CELERY_RESULT_BACKEND = 'redis://localhost:6379/0'
CELERY_TIMEZONE = 'UTC'
```
3. **配置 Supervisor**:
- 在Dockerfile中,复制一份Supervisor的配置文件supervisord.conf.example,并重命名为supervisord.conf。
4. **启动Celery命令**:
- 在supervisord.conf中,添加一条Celery worker的配置,指定worker的启动命令和环境变量。
```ini
[program:celery_worker]
command=/usr/local/bin/celery -A your_celery_app worker --loglevel=info --concurrency=4
autostart=true
autorestart=true
redirect_stderr=true
```
5. **启动 Supervisor**:
- 在Supervisor的配置里,还需要添加一条启动supervisord命令,用于监控和管理其他服务。
6. **运行 Docker 容器**:
- 在Dockerfile的最后,指定使用Supervisor启动应用程序和服务,例如:
```dockerfile
CMD ["supervisord", "-c", "/etc/supervisord.conf"]
```
7. **运行容器**:
- 构建并运行Docker镜像,然后启动包含Celery和Supervisor的服务容器。
现在,当你需要停止或更新Celery应用时,只要停止或更新Docker容器,Supervisor会确保Celery worker在容器重启后自动重新开始。
阅读全文