容器化的芹菜工人不会在 docker-compose 上启动
Containerised celery worker won't start on docker-compose up
我对 docker 的了解非常有限,所以我来这里发布这个 celery worker 服务不会启动,但出现以下错误:
ERROR: for api_worker_1 Cannot start service worker: b'OCI runtime
create failed: container_linux.go:348: starting container process
caused "exec: \"worker\": executable file not found in $PATH":
unknown'
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 服务:
worker:
restart: always
build: .
volumes:
- .:/app
command: celery worker -B -l info -A app.tasks.celery
我不是using/installing来自docker的芹菜。因为这是一个工作图像而不是芹菜图像。
这是 运行 flask 应用程序,它最近正在运行。清理或删除图像和容器后。 运行 docker-compose build
和 docker-compose up
产生
OCI runtime create failed:..
之后出错。
UPDATE
我更新了问题的标题,因为 celery 标题在这里具有误导性。这是一个没有 DockerFile
的辅助服务。这是一项启动驻留在 app/tasks/celery
.
上的 celery worker 的服务
在您的 docker-compose 文件中,您为 web
和 worker
指定了相同的构建上下文 (build: .
)。您在上面发布的 Dockerfile
用于构建 web
映像和 worker
映像,显然 celery
未安装在该映像中。
我对 docker 的了解非常有限,所以我来这里发布这个 celery worker 服务不会启动,但出现以下错误:
ERROR: for api_worker_1 Cannot start service worker: b'OCI runtime create failed: container_linux.go:348: starting container process caused "exec: \"worker\": executable file not found in $PATH": unknown'
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 服务:
worker:
restart: always
build: .
volumes:
- .:/app
command: celery worker -B -l info -A app.tasks.celery
我不是using/installing来自docker的芹菜。因为这是一个工作图像而不是芹菜图像。
这是 运行 flask 应用程序,它最近正在运行。清理或删除图像和容器后。 运行 docker-compose build
和 docker-compose up
产生
OCI runtime create failed:..
之后出错。
UPDATE
我更新了问题的标题,因为 celery 标题在这里具有误导性。这是一个没有 DockerFile
的辅助服务。这是一项启动驻留在 app/tasks/celery
.
在您的 docker-compose 文件中,您为 web
和 worker
指定了相同的构建上下文 (build: .
)。您在上面发布的 Dockerfile
用于构建 web
映像和 worker
映像,显然 celery
未安装在该映像中。