файл среды «docker compose», передаваемый через переменные оболочки, больше не работает

#docker #docker-compose #docker-desktop

Вопрос:

Я хочу использовать файл среды ( env_file ) для передачи нетронутых переменных оболочки. Каков правильный синтаксис?

Мое docker-compose.yaml досье:

 version: "3.9"
services:
  daemon:
    image: my-image
    env_file:
      - ./env/docker.development.env
    ...
 

Мой env файл (раньше работал, но больше не работает):

 ASPNETCORE_ENVIRONMENT=Development
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
 

AWS_ACCESS_KEY_ID И AWS_SECRET_ACCESS_KEY раньше передавались из переменных оболочки. Это больше не работает.

Я пытался:

 AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID
AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}
 

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

Когда это делается из docker-compose.yaml environment предложения, то это все равно работает, т. е.

 ...
    image: my-image
    environment:
      - ASPNETCORE_ENVIRONMENT=Development
      - AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}
 

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

Примечание: Использование рабочего стола Docker для Windows с подсистемой Linux версии 4.0.1 (68347)

Ответ №1:

Прочитав примечания к выпуску, я понял, что есть новая опция «Docker Compose V2».

Установите флажок Использовать Docker Compose V2

Из GitHub видно, что с Compose V2 и переменными среды все еще остается много проблем. Снятие флажка решает проблему.