gpt4 book ai didi

docker - 如何将环境变量从 .env 文件获取到 docker-compose.yml ?

转载 作者:行者123 更新时间:2023-12-01 23:51:07 29 4
gpt4 key购买 nike

我有一个 .env 文件和一个 docker-compose 文件。我使用 docker-compose 上的 env_file 属性引用 env 文件。然后,我使用变量插值来使用 .env 文件中定义的变量设置另一个环境变量。由于某种原因,Docker 无法识别 .env 文件中定义的变量。

app.env:

MYSQL_DATABASE=wordpress
DB_USER=root
MYSQL_ROOT_PASSWORD=example

docker-compose.yml:

version: '3.1'
services:
wordpress:
container_name: 'wp'
build: .
restart: unless-stopped
links:
- mysql
env_file:
- app.env
environment:
- WORDPRESS_DB_USER=${DB_USER}
- WORDPRESS_DB_PASSWORD=${MYSQL_ROOT_PASSWORD}
- WORDPRESS_DB_NAME=${MYSQL_DATABASE}
ports:
- 80:80

最佳答案

您似乎混淆了 env_file 的含义配置选项。它将多个环境变量从外部文件传递到服务的容器。它与环境相同,但它们是从文件加载的。

如果您想让docker compose识别.env文件中定义的变量,它应该恰好是.env文件。

要实现您想要的目标,您需要:

1.app.env重命名为.env:

mv app.env .env

2.docker-compose.yaml中删除env_file配置选项:

version: '3.1'
services:
wordpress:
container_name: 'wp'
build: .
restart: unless-stopped
links:
- mysql
environment:
- WORDPRESS_DB_USER=${DB_USER}
- WORDPRESS_DB_PASSWORD=${MYSQL_ROOT_PASSWORD}
- WORDPRESS_DB_NAME=${MYSQL_DATABASE}
ports:
- 80:80

关于docker - 如何将环境变量从 .env 文件获取到 docker-compose.yml ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49096673/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com