В Makefile используйте переменную среды, определенную в контейнере Docker, для запуска команды - PullRequest
0 голосов
/ 08 января 2019

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

В моем Makefile:

sqlcmd: 
    docker-compose run sqlcmd sqlcmd -S sqlserver -U "$SQL_HOST" -P "$SQL_PASSWORD"

Тогда я бегу make sqlcmd.

Но он печатает усеченные слова. Я хочу использовать переменные окружения $SQL_HOST и $SQL_PASSWORD, которые определены в контейнере.

Как мне заставить это убежать должным образом?

1 Ответ

0 голосов
/ 08 января 2019

Чтобы получить литерал $, используйте $$.

docker-compose run sqlcmd sqlcmd -S sqlserver -U "$$SQL_HOST" -P "$$SQL_PASSWORD"

Если SQL_HOST и SQL_PASSWORD являются переменными, определенными ранее в вашем Makefile (вместо переменных окружения), вы должны написать это так:

SQL_HOST=localhost
SQL_PASSWORD=hunter2
sqlcmd: 
    docker-compose run sqlcmd sqlcmd -S sqlserver -U "$(SQL_HOST)" -P "$(SQL_PASSWORD)"

PS: Добро пожаловать на сайт.

РЕДАКТИРОВАТЬ : Чтобы отложить расширение переменных до тех пор, пока контейнер не запустится, вам нужно запретить расширению их оболочкой. Если переменная заключена в одинарные кавычки, оболочка не будет пытаться ее развернуть.

Вот пример:

docker-compose run sqlcmd sqlcmd -S sqlserver -U '"$$SQL_HOST"' -P '"$$SQL_PASSWORD"'

РЕДАКТИРОВАТЬ РЕДАКТИРОВАТЬ : Полагаю, вам это тоже нужно, чтобы Docker использовал оболочку для расширения переменных:

docker-compose run sqlcmd sh -c 'sqlcmd -S sqlserver -U "$$SQL_HOST" -P "$$SQL_PASSWORD"'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...