多个 docker compose 文件,指定了 env_file

2024-02-20

我正在开发一个项目,其中使用 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 文件的文件?


就我个人而言,对我有用并且很高兴的是我在所有项目的根目录中有一个空的 docker-compose 文件,我需要在它们之间进行交叉引用,并且始终将其设置为第一个-f在所有撰写命令中,并更改了我的所有撰写文件以使用第一个撰写文件所在的解决方案/源的根目录的相对路径。

/src <- root
/src/docker-compose.yml <- empty docker-compose file only specifying version
/src/api/docker-compose.yml <- docker-compose file using paths relative from /src/
/src/web/docker-compose.yml <- docker-compose file using paths relative from /src/

然后我有一些调用 docker-compose 的批处理/powershell 文件,例如:

/** docker-compose-re-up.bat **/
docker-compose -f ../docker-compose.yml -f docker-compose.yml down
docker-compose -f ../docker-compose.yml -f docker-compose.yml build
docker-compose -f ../docker-compose.yml -f docker-compose.yml up -d
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

多个 docker compose 文件,指定了 env_file 的相关文章

随机推荐