我正在开发一个项目,其中使用 docker 创建基本配置并扩展它。我的基本 docker-compose.yml 文件有links
,所以我不能使用extends
扩展撰写文件中的参数。相反,我指定了多个 docker-compose 文件docker-compose
tool.
这运作良好,除了似乎通往.env
文件始终与指定的第一个 docker-compose.yml 文件相关,这破坏了我的预期功能。
Example:
docker-compose.yml(假设住在一个共同的地方~/base-app
)
web:
build: .
volumes:
- .:/usr/src/app
ports:
- "80:3000"
links:
- redis
redis:
image: redis:latest
ports:
- "6379:6379"
现在在子应用程序中,我想指定一个command
and env_file
:
docker-compose.override.yml
web:
environment:
NODE_ENV: development
env_file: .env
command: node server.js
当我运行此设置时,我将使用以下命令:
docker-compose -f ~/base-app/docker-compose.yml -f docker-compose.override.yml up
只要我不指定,这效果很好env_file
。但随着env_file
指定,我会收到如下错误:
ERROR: Couldn't find env file: ~/base-app/.env
正在阅读docker-compose 文档 https://docs.docker.com/compose/compose-file/#env-file,它表示使用时 env 文件路径是相对于 docker-compose 文件的-f
flag.
我错过了什么,还是这是一个错误?什么是一种干净的使用方法.env
相对于覆盖 docker-compose 文件的文件?