Docker-Compose經過文件聲明默認的環境變量

寫文目的

在寫本文以前,我在作一個docker-compose項目,這裏須要在docker-compose.yml配置中引用到宿主機的ip,然而docker-compose並無命令行一個輸入的選項,看了些博客和官方文檔,發現本身定義的如common.env中定義的鍵值對,只能徹底當作環境變量被引用,而不是部分變量。糾結良久,又仔細看了官方文檔,發現了默認的配置,docker也可用,記錄做此文,備忘待查,分享與諸君。nginx

Compose支持使用聲明默認的環境變量的.env文件啓動,這個文件的位置須要與docker-compose.yml同級目錄,咱們只須要在同級目錄下建立.env文件來指定默認的環境變量,這些變量能夠部分或完整做爲配置的內容,大大簡化咱們的配置,以及一處修改多處生效的目的docker

語法規則

  • Compose支持.env文件中的每一行都是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 咱們會獲得以下輸出tcp

hellxz@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

相關文章
相關標籤/搜索