Подстановка Dockerfile ARG в строку в команде RUN - PullRequest
0 голосов
/ 08 мая 2018

В моем Dockerfile я хочу подставить переменную в строку.

ARG w=world
RUN echo 'Hello $w'

Я хочу, чтобы вывод был Hello world, но фактический вывод - Hello $w

Ответы [ 2 ]

0 голосов
/ 09 мая 2018

Docker не раскрывает значения ARG в команде RUN. Вместо этого он вводит ARG как переменную окружения. Оболочка сама расширяет переменную, и все оболочки Linux, которые я использовал, ведут себя по-разному в зависимости от типа кавычки.

Одинарные кавычки указывают оболочке не расширять что-либо, и вам нужно только экранировать одинарные кавычки и экранирующие символы. В то время как двойные кавычки включают в себя расширение переменных наряду со многими другими символами escape. Для получения более подробной информации смотрите страницу руководства на вашей оболочке.

Итак, решение, которое вы уже нашли:

RUN echo "Hello $w"
0 голосов
/ 08 мая 2018

RUN echo "Hello $w" работает отлично. ARG разрешается в двойных кавычках.

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