• Docker-Compose通过文件声明默认的环境变量


    写文目的

    在写本文之前,我在做一个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,配置文件中的值会被覆盖

  • 相关阅读:
    PHP中require()文件包含的正确用法
    Android Studio开发环境的配置
    卡宴
    Android Studio 简单介绍和使用问题小结
    android:ToolBar详解(手把手教程)
    Android --- 读取系统资源函数getResources()小结
    Android Studio 提示Error running app: No Android facet found for app
    iOS开发之-- 抢购、距活动结束,剩余时间倒计时
    iOS开发之--实现倒计时显示时分秒
    iOS开发之--获取验证码倒计时及闪烁问题解决方案
  • 原文地址:https://www.cnblogs.com/hellxz/p/11039514.html
Copyright © 2020-2023  润新知