我对docker的了解非常有限,所以我来到这里发布此celery worker服务不会以以下错误开头:
错误:对于api_worker_1无法启动服务工作者:b'OCI运行时 创建失败:container_linux.go:348:启动容器进程 导致“ exec:\“ worker \”:在$ PATH中找不到可执行文件”: 未知”
DockerFile
# web
FROM python:2.7
RUN apt-get update
RUN apt-get install -y swig
RUN apt-get install -y libssl1.0-dev
RUN pip install --upgrade pip
ADD . /app
WORKDIR /app
CMD ["python", "-u","app.py"]
docker-compose.yml
version: '2'
services:
db:
image: postgres
restart: always
volumes:
- ./postgres-data:/var/lib/postgresql/data
ports:
- "5432:5432"
web:
restart: always
build: .
volumes:
- ./web:/data/web
- .:/app
command: python -u app.py
ports:
- "5000:5000"
rabbit:
hostname: rabbit
image: rabbitmq:latest
environment:
- RABBITMQ_DEFAULT_USER=guest
- RABBITMQ_DEFAULT_PASS=guest
ports:
- "5672:5672"
worker:
restart: always
build: .
volumes:
- .:/app
command: celery worker -B -l info -A app.tasks.celery
links:
- db
- rabbit
- web
depends_on:
- web
查看工作者服务:
worker:
restart: always
build: .
volumes:
- .:/app
command: celery worker -B -l info -A app.tasks.celery
我没有从docker使用/安装celery。因为这是工人形象,而不是芹菜形象。
这正在与flask应用程序一起运行,并且最近正在运行。清理或删除图像和容器后。运行docker-compose build
和docker-compose up
会产生
OCI运行时创建失败:..
此后发生错误。
更新
我更新了问题的标题,因为此处的芹菜标题令人误解。这是一个工作服务,上面没有DockerFile
。提供一项启动驻留在app/tasks/celery
上的芹菜工作者的服务。
答案 0 :(得分:2)
在docker-compose文件中,您为build: .
和web
指定了相同的构建上下文(worker
)。您上面发布的Dockerfile
用于构建web
映像和worker
映像,显然该映像中未安装celery
。