[英]Docker compose environment variables specified with env_file parameter not working inside the dockerfile
[英]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"
現在在子應用程序中,我想指定一個command
和env_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.