docker -компонент: подстановка переменных CMD - PullRequest
0 голосов
/ 24 февраля 2020

Я создаю новый Docker образ, но моя команда CMD с подстановкой переменных не работает.

Я знаю, что мне нужно включить интерпретатор с -c следующим образом:

CMD ["sh", "-c", "hello.sh $VARIABLE"]

Но мой вариант использования отличается, потому что мне нужно выполнить что-то с sudo:

CMD ["sudo", "-u", "oracle", "$ORACLE_HOME/user_projects/domains/$DOMAIN_NAME/startWebLogic.sh"]

Это работает правильно:

CMD $ORACLE_HOME/user_projects/domains/$DOMAIN_NAME/startWebLogic.sh

Но как заставить работать с sudo?

Ответы [ 2 ]

0 голосов
/ 25 февраля 2020

Попробуйте:

CMD ["sudo", "-E", "-u", "oracle", "sh", "-c", "\"$ORACLE_HOME/user_projects/domains/$DOMAIN_NAME/startWebLogic.sh\""]

По умолчанию sudo запускает новую среду. Чтобы sudo сохранил среду, вам нужно передать параметр -E.

Затем, чтобы $variables раскрылся, вам нужно запустить его под оболочкой, чтобы они могли расширяться. Но тогда для защиты от расширения оболочки с разделением слов я думаю, что вы должны заключать в кавычки расширения переменных, таким образом, дополнительные \".

Может быть, это будет проще, и также сработает:

CMD ["sh", "-c", "sudo -u oracle \"$ORACLE_HOME/user_projects/domains/$DOMAIN_NAME/startWebLogic.sh\""]

Но в docker я думаю, что лучше просто установить пользователя:

USER oracle
CMD $ORACLE_HOME/user_projects/domains/$DOMAIN_NAME/startWebLogic.sh
0 голосов
/ 24 февраля 2020

Это то же самое, только с sudo впереди:

CMD ["sudo", "-u", "oracle", "sh", "-c", "hello.sh $VARIABLE"]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...