"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_ID
和 AWS_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 和环境变量似乎仍然存在很多问题。取消选中该选项可解决问题。
我想使用环境文件 (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_ID
和 AWS_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 和环境变量似乎仍然存在很多问题。取消选中该选项可解决问题。