2016-11-04 2 views
2

Мне нужно дать аргумент во время работы Docker Image, которое будет числом от 0 до 3.Передача различных аргументов при запуске изображения Docker Несколько раз

Dockerfile имеет следующее:

WORKDIR "mydir/build" 
CMD ./maker oneapp > /artifacts/oneapp_$1.log ; ./maker twoapp > /artifacts/twoapp_$1.log ; ./maker -j13 threeapp > /artifacts/threeapp_$1.log 

Я буду работать те же Docker изображение нескольких раз, поэтому мне нужно журналы, чтобы быть сохранены в/артефактах прилагаемых с _0, _1, _2, _3, в зависимости от обстоятельств.

Я попытался сохранить это в файле Docker, но не хочу передавать эту полную строку в качестве аргумента во время работы докеры.

ENTRYPOINT ["/bin/bash"]

./maker oneapp > /artifacts/oneapp_$1.log ; ./maker twoapp > /artifacts/twoapp_$1.log ; ./maker -j13 threeapp > /artifacts/threeapp_$1.log

Возможно ли это? Что мне нужно изменить в Dockerfile, чтобы делать то, что я хочу?

ответ

3

Просто введите свой параметр как ENV.

Объявление ENV in your Dockerfile.

ENV suffix 0 
./maker oneapp > /artifacts/oneapp_${suffix}.log 

The environment variables set using ENV will persist when a container is run from the resulting image.
You can view the values using docker inspect , and change them using docker run --env <key>=<value> .

Таким образом, вы можете заявить, что ENV on docker run, и выгоды от ее значения в запущенном контейнере.

the operator can set any environment variable in the container by using one or more -e flags, even overriding those mentioned above, or already defined by the developer with a Dockerfile ENV:

В Вашем случае, например:

docker run -e suffix=2 <image_name> 
+0

Это хороший и элегантный подход. – Rao

+0

Я добавил ENV count 0 и CMD ./maker oneapp> /artifacts/oneapp_${suffix}.log в файл Docker, но вижу эту ошибку: root @ onl-dev:/data/sept15/target-docker # docker run -it target -e count = 0 docker: Ошибка ответа от демона: oci runtime error: exec: "-e": исполняемый файл не найден в $ PATH. –

+0

@Sweety yes: 'docker run' нуждается в имени изображения для запуска (создайте из него контейнер). У вашей команды нет имени изображения. – VonC

Смежные вопросы