![](/img/trans.png)
[英]Possible to pass env variable from docker-compose.yml to dockerfile?
[英]How to modify the effect of a Dockerfile RUN command based on an environment variable, passed from docker-compose.yml
總而言之,我的項目包括:
因此,在主docker-compose.yml中聲明了2個服務,它們各自具有自己的(非版本化).env文件,在此,我聲明了特定於給定服務的“特定於環境的”參數。 例如,對於后端服務,我定義了數據庫用戶名/密碼; 對於前端服務,我聲明了REST API URL,前端應通過REST API URL通過Ajax檢索其數據。
我正在使用env_file
參數通過主docker-compose.yml將env_file
傳遞給后端服務,並將/frontend/.env傳遞給前端服務。
兩種服務都托管在不同的域(example.com和api.example.com)上。
鑒於Angular 2如何處理其配置,您不能聲明OS級環境變量,而應讓Angular在應用程序內部的運行時使用它們(例如,從env變量中讀取“ BACKEND_URL”並對其進行Ajax調用)。 相反,它希望在構建過程中所有環境參數都在一個名為/src/app/environment.prod.ts的文件中。 我設法通過/ frontend / Dockerfile中的RUN命令創建了此配置文件,但是我在用未版本化/frontend/.env中聲明的動態值填充該文件時遇到了麻煩。 我不想在/ frontend / Dockerfile中對內容進行硬編碼。
一旦/ frontend / Dockerfile生成具有正確值(例如BACKEND_URL=http://api.example.com
)的靜態/src/app/environment.prod.ts,那么其余的構建過程就可以了,並且前端應用程序將獲取這些值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.