首页 > 解决方案 > Celery:通过 Dockerfile 中的 CMD 传递 Docker 变量

问题描述

Docker run 不会使用此命令启动容器。

celery -A proj worker -Ofair --concurrency=600 --without-gossip --time-limit=500 --pool=gevent -l info -n $(uuidgen -r).

但是,它将从以下命令开始:

celery -A proj worker -Ofair --concurrency=600 --without-gossip --time-limit=500 --pool=gevent -l info -n celery1

这是在 Ubuntu 18.04 LTS 上。如果我在终端中运行该命令,芹菜将毫无问题地启动。

Dockerfile

#Download base image ubuntu 16.04
FROM python:3.6-slim

COPY . .

RUN pip install -r requirements.txt

EXPOSE 80 443 6379 9200 9300

CMD celery -A proj worker -Ofair --concurrency=600 --without-gossip --time-limit=500 --pool=gevent -l info -n $(uuidgen -r)``

我希望这会像在终端中运行时那样为 celery 实例生成一个 uuid。

标签: pythondockerdockerfilecelery

解决方案


这是因为 docker 映像上不存在 uuidgen。


推荐阅读