Нет переменных env в bash после экспорта с помощью команды в docker-compose - PullRequest
0 голосов
/ 04 декабря 2018

У меня есть файл serverless.yml, который определяет переменные среды.Чтобы использовать их для моей локальной сцены в док-контейнере, я использую безсерверный плагин dotenv , чтобы экспортировать их в файл .env.Я делаю это в моем docker-compose.yml, где я также экспортирую переменные из этого файла.Это работает, поскольку мои настройки django имеют к ним доступ.

command: >
  bash -c "sls dotenv -s local
  && export $$(grep -v '^#' .serverless/.env | xargs -d '\n')
  && python manage.py makemigrations ingredients"

Однако, если я зайду в контейнер или выполню команду, переменные среды больше не будут доступны:

docker-compose exec name python manage.py createsuperuser

Чего мне не хватает?

Ответы [ 2 ]

0 голосов
/ 05 декабря 2018

Основываясь на ответе Джорджа Эпплтона, я добавил команду экспорта, которую я уже использую, к .bashrc со следующей командой для docker-compose.yml:

echo 'export $$(grep -v \"^#\" .serverless/.env | xargs -d \"\n\")' > /root/.bashrc

Если я сейчасexec bash доступны все переменные окружения.

0 голосов
/ 04 декабря 2018

Переменные среды недоступны, когда вы выполняете, потому что они не являются частью одного и того же выполнения.Вы разветвляете процесс, не присоединяясь.Что бы я сделал, это создал файл profile, который содержит необходимые переменные окружения.Скопируйте его в корневой каталог (или любого пользователя, с которым вы выполняете какие-либо действия) как .profile, и вам будет хорошо.

...