Docker-Compose通过文件声明默认的环境变量
2019-06-17 14:37
651 查看
写文目的
在写本文之前,我在做一个docker-compose项目,这里需要在docker-compose.yml配置中引用到宿主机的ip,然而docker-compose并没有命令行一个输入的选项,看了些博客和官方文档,发现自己定义的如
common.env中定义的键值对,只能完全当做环境变量被引用,而不是部分变量。纠结良久,又仔细看了官方文档,发现了默认的配置,docker也可用,记录作此文,备忘待查,分享与诸君。
Compose支持使用声明默认的环境变量的
.env文件启动,这个文件的位置需要与docker-compose.yml同级目录,我们只需要在同级目录下创建.env文件来指定默认的环境变量,这些变量可以部分或完整作为配置的内容,大大简化我们的配置,以及一处修改多处生效的目的
语法规则
- Compose支持.env文件中的每一行都是
KEY=VAL
格式 - 以
#
开头的内容将被注释 - 忽略空白行
.env
中的KEY可以在docker-compose.yml
中作为某个VAL
的一部分
测试
这里拿个nginx做测试吧,我们最后使用docker-compose config进行查看当前环境生效的配置
新建并进入目录
test,创建
docker-compose.yml文件
mkdir test;cd test;vim docker-compose.yml
version: "3" services: mynginx: image: nginx:${TAG} ports: - 80:80
如果我们此时直接启动
docker-compose config我们会得到如下输出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文件并保存
# .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'
赋值完成。
另,这个默认的环境变量配置的优先级略低,如果是docker-compose run直接从命令行传入相同的KEY,配置文件中的值会被覆盖
相关文章推荐
- openssl 通过环境变量设置默认的配置文件路径(conf cnf)
- 通过环境变量设置WEB项目数据源(Spring)及其项目配置文件路径,动态更新数据源及项目配置
- docker内程序如何读取dockerfile和compose.yml中设置的环境变量
- linux shell 将当前文件地址作为默认路径写入环境变量
- linux shell 将当前文件地址作为默认路径写入环境变量
- 通过reg文件给vc7.1添加环境变量
- Linux下通过源码编译安装程序(configure/make/make install的作用,然后在/etc/profile文件里修改PATH环境变量)
- 二 |基于Linux系统使用docker搭建java环境|更改docker默认文件位置
- 设置BootLoader环境变量,通过NFS挂载文件系统
- Docker Compose引用环境变量的方法示例
- 通过环境变量设置WEB项目数据源(Spring)及其项目配置文件路径,动态更新数据源及项目配置
- 通过docker-compose一键搭建Nginx带动的FDFS服务 分布式文件上传系统
- 在centos下,关于docker环境变量文件的问题
- docker-compose中的环境变量
- Java学习笔记38:通过Spring Bean 注入static变量,来设计一套适合测试,开发,生产环境的配置项
- android之动画通过动画布局声明文件和关联文件为容器布局----布局动画
- Linux中环境变量文件及配置
- 用BAT创建文件夹,创建文件,回显环境变量
- 程序文件【C/C++】变量的定义与声明
- 通过nginx的fastcgi_param来设置环境变量