Передайте аргументы в скрипт, который запускается через Dockerfile во время сборки - PullRequest
1 голос
/ 12 июня 2019

У меня есть скрипт или «консоль», которая запускается во время сборки моего докера через мой Dockerfile.Когда он запускается, он работает нормально и открывает свое интерактивное приглашение.Моя проблема в том, что я не могу передать команды в это интерактивное приглашение.

Вот часть моего dockerfile, которая имеет значение:

    RUN ./iiq console
    RUN import init.xml
    RUN quit

Я ожидаю увидеть зависимости от init.XML принес, но вместо этого я получаю:

Step 24/26 : RUN ./iiq console
 ---> Running in d1bf75e69674
Setting iiq.hostname to d1bf75e69674-console
> Removing intermediate container d1bf75e69674
 ---> 3832361dee0e
Step 25/26 : RUN import init.xml
 ---> Running in 8a3cd63c7789
/bin/sh: import: command not found

Знак «больше, чем знак» на этапах открывает эту консоль и, кажется, ожидает ввода, я просто не уверен, как правильно ее отправить. Я могусобери мой контейнер без этого шага и сделай это вручную, чтобы он работал таким образом.

1 Ответ

1 голос
/ 12 июня 2019

Процесс сборки Docker полностью неинтерактивный.

Интерактивная команда в Dockerfile

Но я делаю это по-другому, вы можете попробовать это в вашем скрипте.

testargs.sh

#!/bin/ash

echo "Arg is $1"

Вот мой Dockerfile

FROM alpine
copy testargs.sh /testargs.sh
RUN chmod +x /testargs.sh
ARG arg1
RUN ./testargs.sh $arg1

Теперь создайте приведенный выше файл Docker.

docker build --no-cache --build-arg arg1=testingarg1 -t test .

Как видите, он не интерактивный, но, по крайней мере, принимает динамический аргумент.

enter image description here

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