У меня есть контейнер, который использует том в своей точке входа.например
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