簡體   English   中英

多個docker compose文件,指定了env_file

[英]Multiple docker compose files, with env_file specified

我正在使用docker創建基本配置並對其進行擴展的項目。 我的基本docker-compose.yml文件具有links ,因此我無法在擴展撰寫文件中使用extends參數。 相反,我向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文件的。

我是否缺少某些東西,或者這是一個錯誤? 使用.env文件相對於覆蓋.env -compose文件的一種干凈方法是什么?

就我個人而言,對我有用的,讓我很高興的是,我在所有需要交叉引用的項目的根目錄下都有一個空的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/

然后,我有一些調用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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM