Как сохранить переменную среды в dockerfile или docker compose.yaml, значение которого извлекается из ОС, на которой оно развертывается?

#python-3.x #docker #docker-compose #environment-variables #dockerfile

#python-3.x #docker #docker-compose #переменные среды #dockerfile

Вопрос:

Я хочу использовать некоторые переменные env в своем приложении, которое выполняется в контейнере docker. Как я могу получить эти переменные среды в своем коде?

Если я использую dockerfile или docker-compose yaml, то как я могу экспортировать его для чтения значений из ОС, на которой он запускается в конечном итоге, и как его можно прочитать в коде?

Так, например, если я запускаю свой docker в экземплярах AWS, мне нужны ключи AWS из экземпляра, которые будут использоваться в моем контейнерном приложении.

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

1. создайте .env файл и получите доступ к нужным переменным в docker-compose.yaml?

2. Обратите внимание, что если вы используете один из стандартных пакетов SDK AWS, и к вашему экземпляру привязана роль IAM, вы можете получить учетные данные через службу метаданных EC2 без установки каких-либо переменных среды (даже если вы работаете в контейнере).

Ответ №1:

Для docker-compose:

Создайте .env файл в том же каталоге, что и docker-compose.yml

Например, для файла .env с содержимым:

 DOCKER_IMAGE_NAME=docker_image_here
POSTGRES_PASSWORD=POSTGRES_PASSWORD_HERE
  

Затем вы можете получить доступ к переменным внутри файла docker-compose.yml:

 service-name:
  web:
  image: ${IMAGE_NAME}
  environment:
    postgres_password: "${POSTGRES_PASSWORD}"