docker-compose不能识别env_file文件/位置,并仍然尝试使用默认的.env
这是我的撰写文件dev.yml
version: '2' volumes: rethinkdb_data_dev: {} services: rethinkdb: image: rethinkdb:latest volumes: - rethinkdb_data_dev:/home/rethinkdb_data rabbitmq: image: rabbitmq:latest fumio: build: context: . dockerfile: ./compose/fumio_dev/Dockerfile depends_on: - rethinkdb - rabbitmq links: - rethinkdb - rabbitmq env_file: ./compose/fumio_dev/dev.env environment: - GIRLFRIEND_FUMIO_CONFIG=development - GIRLFRIEND_FUMIO_NOSQLDATABASE_HOST=rethinkdb ports: - "${GIRLFRIEND_FUMIO_PORT}:8001"
dev.yml
文件中的environment
是有意的,所以如果需要的话,我可以用dev.env
覆盖它们。
我的dev.env
文件位于compose/fumio_dev/
文件夹内,相对于dev.yml
文件。
GIRLFRIEND_FUMIO_PORT=8000
当我运行docker-compose -f dev.yml build
时会发生什么情况
如果我在根文件夹中提供.env
文件,它运行良好, env_file
-compose忽略env_file
的值,并尝试使用默认的.env
代替。 所以docker-compose env_file是不是按预期工作,或者我失去了一些东西?
我的docker-compose版本是1.8.0,我降级到1.7.1,但仍然没有运气(使用pip安装)。
项目根中的.env
文件和Compose文件中的env_file:
字段是两个不同的概念。
.env
是用于Compose默认环境的设置。 在这个文件中设置的值可以在Compose文件中使用。
env_file:
字段用于设置容器的默认环境。 在此设置的值可以在容器中使用,但不能在撰写文件中使用。
有关更多信息,请参见https://docs.docker.com/compose/env-file/ 。