Команда / CMD в docker-compose не эквивалентна CMD в Dockerfile - PullRequest
0 голосов
/ 16 декабря 2018

У меня есть контейнер, который использует том в своей точке входа.например

CMD bash /some/volume/bash_script.sh

Я переместил это в композицию, но это работает, только если мои точки компоновки указывают на Dockerfile в секции build, если я пытаюсь написать ту же строку в секции command, не действуеткак я ожидаю и выдает файл не найдена ошибка.

Я также пытался использовать docker-compose run <specific service> bash /some/volume/bash_script.sh, который выдал мне ту же ошибку.

Вопрос: почему у меня нет этого тома во время выполнения docker-compose 'команды'??Есть ли способ заставить эту работу / переопределить CMD в моем dockerfile?

РЕДАКТИРОВАТЬ: я покажу конкретно, как я делаю это в моих файлах:

docker-compose:

version: '3'
services:
  base:
    build: 
      context: ..
      dockerfile: BaseDockerfile
    volumes:
      code:/volumes/code/
  my_service:
    volumes:
      code:/volumes/code/
    container_name: my_service
    image: my_service_image
    ports:
      - 1337:1337
    build: 
      context: ..
      dockerfile: Dockerfile

томов: код:

BaseDockerfile:

FROM python:3.6-slim

WORKDIR /volumes/code/

COPY code.py code.py
CMD tail -f /dev/null

Dockerfile:

FROM python:3.6-slim

RUN apt-get update && apt-get install -y redis-server \
alien \
unixodbc 

WORKDIR /volumes/code/


CMD python code.py;

Это работает.

Но если я попытаюсь добавить в docker-compose.yml эту строку:

command: python code.py

Тогда этот файл не будет существовать во время команды.Я ожидал, что это будет вести себя так же, как команда CMD

1 Ответ

0 голосов
/ 23 декабря 2018

(Частичный) ответ заключается в том, что сгенерированная ошибка вовсе не была проблемой.Выполнение следующей команды: bash -c 'python code.py' работало нормально.Я до сих пор не могу объяснить, почему была разница между CMD в Dockerfile и опцией «команда» docker-compose.но это решило это для меня

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...