Контейнер из сельдерея не запустится в докер - PullRequest
0 голосов
/ 22 марта 2019

Мои знания в Docker довольно ограничены, поэтому я пришел сюда, и публикация этой службы для сельдерея не начнется со следующей ошибки:

ОШИБКА: для api_worker_1 Невозможно запустить сервисного работника: b'OCI runtime Ошибка создания: 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-compose build и docker-compose up дает

Ошибка создания среды выполнения OCI: ..

Ошибка после.

UPDATE

Я обновил заголовок вопроса, потому что название сельдерея вводит в заблуждение здесь. Это скорее рабочий сервис, на котором нет DockerFile. Это услуга для запуска работника сельдерея, которая находится на app/tasks/celery.

1 Ответ

2 голосов
/ 22 марта 2019

В вашем файле docker-compose вы указали один и тот же контекст сборки (build: .) для web и worker. Dockerfile, который вы разместили выше, используется для создания образа web И worker, и, очевидно, celery не установлен в этом образе.

...