переменные docker-compose и передаваемые в оболочке env (опция-e)

#docker #docker-compose

#docker #docker-compose

Вопрос:

У меня есть docker-compose.yml, на который ссылается ${host_repo_dir} . Попытка запустить службу, определенную там следующим образом:

 docker-compose run -e host_repo_dir=$(pwd) http-api
  

Вывод:

 WARNING: The host_repo_dir variable is not set. Defaulting to a blank string.
  

Что дает? Я думаю, что я следуюhttps://docs.docker.com/compose/reference/run /.

моя среда:

версия docker: 18.09.3

версия docker-compose: 1.24.0

docker для Windows, доступ к которому осуществляется из WSL

Это проблема WSL?

Обновление: предварительная настройка переменных env работает, но, по-видимому, не всегда:

 echo "host repo dir: ${host_repo_dir}, repo name: ${repository_name}, docker repo: ${docker_repository}"
docker-compose run 
    -e host_repo_dir 
    -e repository_name 
    -e docker_repository 
    ${repository_name} || ( cd ${previous_directory} ; exit 3 )
  

вывод:

 host repo dir: /c/Users/muellmi1/projects/payoff-2015/http-api, repo name: http-api, docker repo: localhost.localdomain
WARNING: The docker_repository variable is not set. Defaulting to a blank string.
  

docker_repository был установлен заранее $1 в начале этого скрипта. Теперь я понимаю, что необходимо заранее экспортировать переменные. Итак, то, что сработало для меня, было запущено export [VARNAME] для каждой из переменных, позже переданных в docker-compose.

Ответ №1:

Предполагая, что host_repo_dir уже установлен и экспортирован, вы можете сделать.

docker-compose run -e host_repo_dir http-api

Комментарии:

1. действительно, похоже, это работает! не работает ли синтаксис KEY = VAL из-за ошибки docker-compose, или я что-то упускаю из виду?