gpt4 book ai didi

docker - 当我在不同的目录中使用 docker-compose -f 时,未读取环境文件

转载 作者:行者123 更新时间:2023-12-02 01:05:39 27 4
gpt4 key购买 nike

我的 Docker 有问题 .env文件。当我在我的 Docker 文件夹中时(我有 docker-compose.yml.env 文件),从 .env 读取环境变量美好的。但是,当我运行 docker-compose -f ./docker/docker-compose.yml up --build -d在更高级别的目录中,我收到如下警告:

The MYSQL_ROOT_PASSWORD variable is not set. Defaulting to a blank string. 

有没有人遇到过这个问题?我尝试设置 env_file位于 docker-compose.yml 的属性(property)并使用其他文件编码(我在谷歌找到了这个解决方案),但仍然没有。

这是我的配置:
version: '2'

services:
mysql:
container_name: mysql
image: mysql
volumes:
- "./.data/db:/var/lib/mysql"
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_DATABASE: ${MYSQL_DATABASE}
MYSQL_USER: ${MYSQL_USER}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}

.env 文件:
# MySQL
MYSQL_ROOT_PASSWORD=test
MYSQL_DATABASE=test
MYSQL_USER=test
MYSQL_PASSWORD=test

最佳答案

正如 Tagc 所说,这是带有 .env 的 docker-compose 的记录行为。文件,它必须在您正在运行的目录中docker-compose .您不能使用 env_file因为那设置了一个不同的环境。 .env文件设置 docker-compose 使用的环境解析 yml 文件(因此无法从文件中设置,这将是一个循环依赖),而 env_file将环境变量注入(inject)正在运行的容器中。

如果由于某种原因无法 cd 进入文件夹或移动 .env 文件,则可以手动获取文件,例如:

env $(cat docker/.env | grep -v ^# | xargs) \
docker-compose -f docker/docker-compose.yml up --build -d

关于docker - 当我在不同的目录中使用 docker-compose -f 时,未读取环境文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47631332/

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