首页 > 解决方案 > 容器化的 celery worker 不会在 docker-compose up 上启动

问题描述

我对 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"]

码头工人-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。因为这是一个工人形象而不是芹菜形象。

这是使用烧瓶应用程序运行的,它最近正在运行。清理或删除图像和容器后。运行docker-compose builddocker-compose up产生

OCI 运行时创建失败:..

之后出错。

更新

我更新了问题的标题,因为 celery 标题在这里具有误导性。这是一个工人服务,没有DockerFile它。这是一项启动 celery worker 的服务,它驻留在app/tasks/celery.

标签: python-2.7dockerdocker-composecelery

解决方案


在您的 docker-compose 文件中,您为和指定了相同的构建上下文 ( build: .) 。您在上面发布的内容用于构建图像和图像,并且显然没有安装在该图像中。webworkerDockerfilewebworkercelery


推荐阅读