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

相关文章
相关标签/搜索