多个docker组合文件,指定了env_file

问题描述 投票:1回答:1

我正在开发一个项目,我正在使用docker来创建基本配置并扩展它。我的base docker-compose.yml文件有links,所以我不能在扩展的compose文件中使用extends param。相反,我正在为docker-compose工具指定多个docker-compose文件。

这很好用,除了看起来.env文件的路径总是相对于指定的第一个docker-compose.yml文件,这会破坏我的预期功能。

例:

docker-compose.yml(生活在一个共同的位置,让我们说~/base-app

web:
  build: .
  volumes:
    - .:/usr/src/app
  ports:
    - "80:3000"
  links:
    - redis
redis:
  image: redis:latest
  ports:
    - "6379:6379"

现在在儿童应用程序中,我想指定一个commandenv_file

泊坞窗,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 docs,它表示当使用-f标志时,env文件路径相对于docker-compose文件。

我错过了什么,或者这是一个错误?相对于覆盖docker-compose文件,使用.env文件的干净方法是什么?

docker environment-variables dockerfile docker-compose
1个回答
0
投票

个人对我有用并且很安静的是我在所有项目的根目录下都有一个空的docker-compose文件,我需要在它们之间进行交叉引用,并始终将其设置为所有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/

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

/** 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
© www.soinside.com 2019 - 2024. All rights reserved.