You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django+Redis+Celery+Flower容器化启动失败问题求助

问题排查与解决

核心错误原因

你遇到的executable file not found in $PATH错误,根源是docker-compose中celery和flower服务的entrypoint格式错误:

  • 当使用数组形式定义entrypoint时,Docker会将数组第一个元素当作可执行文件,后续元素作为参数。你把整个celery命令写成单个字符串元素,Docker会尝试寻找名为celery -A core worker -P eventlet --autoscale=10,1 -l INFO的可执行文件,显然不存在。

修复步骤

1. 修正celery服务的entrypoint配置

在docker-compose.yml的celery服务中,将entrypoint拆分为独立的命令和参数:

celery:
  container_name: celery
  restart: unless-stopped
  env_file: .env
  volumes:
    - npm:/app
    - ./.env:/app/.env:ro
  build:
    context: .
    dockerfile: ./Dockerfile
  networks:
    - npm
  depends_on:
    - redis
  entrypoint:
    - celery
    - -A
    - core
    - worker
    - -P
    - eventlet
    - --autoscale=10,1
    - -l
    - INFO

2. 修正flower服务的entrypoint配置

同样拆分flower的entrypoint为独立元素:

flower:
  container_name: flower
  restart: unless-stopped
  ports:
    - "5555:5555"
  env_file: .env
  volumes:
    - npm:/app
    - ./.env:/app/.env:ro
  build:
    context: .
    dockerfile: ./Dockerfile
  networks:
    - npm
  depends_on:
    - redis
    - celery
  entrypoint:
    - celery
    - -b
    - redis://redis:6379
    - flower

3. 可选优化:保留数据库迁移逻辑(按需选择)

如果希望celery/flower启动前执行数据库迁移,不要覆盖entrypoint,改用command字段替换默认CMD:

celery:
  # 其他配置不变
  entrypoint: ["sh", "entrypoint.sh"]
  command:
    - celery
    - -A
    - core
    - worker
    - -P
    - eventlet
    - --autoscale=10,1
    - -l
    - INFO

flower服务同理:

flower:
  # 其他配置不变
  entrypoint: ["sh", "entrypoint.sh"]
  command:
    - celery
    - -b
    - redis://redis:6379
    - flower

注:通常celery worker无需执行迁移,直接覆盖entrypoint即可。

额外验证点

  • 确认requirements.txt已包含celery和flower,你的配置中已满足该条件;
  • 可进入django容器执行which celery,验证celery可执行文件路径存在(pip安装后会自动加入环境变量)。

内容的提问来源于stack exchange,提问作者Nahidujjaman Hridoy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 20:12:38