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

我的Docker .env文件有问题。 当我在我的Docker文件夹(我有docker-compose.yml.env文件),环境variables读取从.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设置env_file属性,并使用其他文件编码(我在Google中find了这个解决scheme),而且什么也没有。

这是我的configuration:

 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所说,这是docker-compose与.env文件的logging行为,它必须在您运行.env -compose的目录中。 你不能使用env_file ,因为这是设置一个不同的环境。 .env文件设置.env docker-compose使用的环境来parsingyml文件(因此不能在文件中设置,这将是一个循环依赖),而env_file将环境variables注入到正在运行的容器中。

如果由于某种原因无法将光盘放入文件夹或移动.env文件,则可以使用如下所示的方法手动input文件:

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