"docker compose" 环境文件通过 shell 变量不再起作用

"docker compose" environment file pass through shell variables don't work anymore

我想使用环境文件 (env_file) 传递未触及的 shell 变量。正确的语法是什么?

我的 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_IDAWS_SECRET_ACCESS_KEY 过去是从 shell 变量传递过来的。它不再起作用了。

我试过了:

AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID
AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}

容器中生成的环境变量始终为空。 documentation 似乎表明它应该有效。

docker-compose.yaml environment 子句中执行 时,它会起作用,

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

但我想从公共 env_file 开始,以避免重复我的所有服务。

注意:使用 Docker Desktop for Windows w/ Linux Subsystem version 4.0.1 (68347)

阅读 release notes,我意识到有一个新的“Docker Compose V2”选项。

GitHub 来看,Compose V2 和环境变量似乎仍然存在很多问题。取消选中该选项可解决问题。