天天看點

Docker-Compose通過檔案聲明預設的環境變量

在寫本文之前,我在做一個docker-compose項目,這裡需要在docker-compose.yml配置中引用到主控端的ip,然而docker-compose并沒有指令行一個輸入的選項,看了些部落格和官方文檔,發現自己定義的如<code>common.env</code>中定義的鍵值對,隻能完全當做環境變量被引用,而不是部分變量。糾結良久,又仔細看了官方文檔,發現了預設的配置,docker也可用,記錄作此文,備忘待查,分享與諸君。

Compose支援使用聲明預設的環境變量的<code>.env</code>檔案啟動,這個檔案的位置需要與docker-compose.yml同級目錄,我們隻需要在同級目錄下建立<code>.env</code>檔案來指定預設的環境變量,這些變量可以部分或完整作為配置的内容,大大簡化我們的配置,以及一處修改多處生效的目的

Compose支援.env檔案中的每一行都是<code>KEY=VAL</code>格式

以<code>#</code>開頭的内容将被注釋

忽略空白行

<code>.env</code>中的KEY可以在<code>docker-compose.yml</code>中作為某個<code>VAL</code>的一部分

這裡拿個nginx做測試吧,我們最後使用docker-compose config進行檢視目前環境生效的配置

建立并進入目錄<code>test</code>,建立<code>docker-compose.yml</code>檔案

如果我們此時直接啟動<code>docker-compose config</code> 我們會得到如下輸出

如你所見,引用的變量不存在被當成空字元串進行指派

建立<code>.env</code>檔案并儲存

再次啟動<code>docker-compose config</code>

指派完成。

另,這個預設的環境變量配置的優先級略低,如果是docker-compose run直接從指令行傳入相同的KEY,配置檔案中的值會被覆寫