问题描述
docker-compose.dev.yml 中存在三个独立的问题,导致 Docker 开发环境无法正常工作:
1. source 命令在 sh 中不存在
容器默认 shell 为 sh(非 bash),source 是 bash 特有命令,sh 不支持。
# 报错:source: not found
sh -c "source venv/bin/activate && ..."
2. Celery --reload 参数不支持
当前 celery 版本不支持 --reload 参数,worker 启动直接报错。
3. Celery worker 未监听实际任务队列
celery_app.py 中定义了任务路由,将任务分发到 processing、video、notification、upload 等命名队列,但 worker 只监听默认的 celery 队列。任务被投递到 processing 队列后永远不会被消费。
复现步骤
docker compose -f docker-compose.dev.yml up
- 两个服务都无法正常启动(问题 1、2)
- 即使手动修复启动问题,上传视频后处理任务不会被执行(问题 3)
修复方案
- source venv/bin/activate &&
+ . venv/bin/activate &&
- celery -A backend.core.celery_app worker --loglevel=debug --reload
+ celery -A backend.core.celery_app worker --loglevel=debug -Q celery,processing,video,notification,upload
修复已包含在 PR #49 中。
问题描述
docker-compose.dev.yml中存在三个独立的问题,导致 Docker 开发环境无法正常工作:1.
source命令在 sh 中不存在容器默认 shell 为
sh(非 bash),source是 bash 特有命令,sh不支持。2. Celery
--reload参数不支持当前 celery 版本不支持
--reload参数,worker 启动直接报错。3. Celery worker 未监听实际任务队列
celery_app.py中定义了任务路由,将任务分发到processing、video、notification、upload等命名队列,但 worker 只监听默认的celery队列。任务被投递到processing队列后永远不会被消费。复现步骤
docker compose -f docker-compose.dev.yml up修复方案
修复已包含在 PR #49 中。