在寫本文以前,我在作一個docker-compose項目,這裏須要在docker-compose.yml配置中引用到宿主機的ip,然而docker-compose並無命令行一個輸入的選項,看了些博客和官方文檔,發現本身定義的如common.env
中定義的鍵值對,只能徹底當作環境變量被引用,而不是部分變量。糾結良久,又仔細看了官方文檔,發現了默認的配置,docker也可用,記錄做此文,備忘待查,分享與諸君。nginx
Compose支持使用聲明默認的環境變量的
.env
文件啓動,這個文件的位置須要與docker-compose.yml同級目錄,咱們只須要在同級目錄下建立.env
文件來指定默認的環境變量,這些變量能夠部分或完整做爲配置的內容,大大簡化咱們的配置,以及一處修改多處生效的目的docker
KEY=VAL
格式#
開頭的內容將被註釋.env
中的KEY能夠在docker-compose.yml
中做爲某個VAL
的一部分這裏拿個nginx作測試吧,咱們最後使用docker-compose config進行查看當前環境生效的配置vim
新建並進入目錄test
,建立docker-compose.yml
文件bash
mkdir test;cd test;vim docker-compose.yml
version: "3" services: mynginx: image: nginx:${TAG} ports: - 80:80
若是咱們此時直接啓動
docker-compose config
咱們會獲得以下輸出tcphellxz@hz:~/test$ docker-compose config WARNING: The TAG variable is not set. Defaulting to a blank string. services: mynginx: image: 'nginx:' ports: - 80:80/tcp version: '3.0'如你所見,引用的變量不存在被當成空字符串進行賦值測試
建立.env
文件並保存spa
# .env the default environment config file TAG=1.7.9
再次啓動docker-compose config
命令行
hellxz@hz:~/test$ docker-compose config services: mynginx: image: nginx:1.7.9 ports: - 80:80/tcp version: '3.0'
賦值完成。code
另,這個默認的環境變量配置的優先級略低,若是是docker-compose run直接從命令行傳入相同的KEY,配置文件中的值會被覆蓋ip