写文目的

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

Docker-Compose通过文件声明默认的环境变量的更多相关文章

  1. Docker Compose模板文件介绍

    模板文件是使用 Compose 的核心,涉及到的指令关键字也比较多,这里面大部分指令跟 docker run 相关参数的含义都是类似的.默认的模板文件名称为 docker-compose.yml ,格 ...

  2. Docker Compose 模板文件 V2

    模板文件是使用Compose的核心,默认模板文件名称为docker-compose.yml ,格式为YAML格式. 目录结构 [root@localhost ~]# tree /opt/compose ...

  3. Docker Compose 搭建 Redis Cluster 集群环境

    在前文<Docker 搭建 Redis Cluster 集群环境>中我已经教过大家如何搭建了,本文使用 Docker Compose 再带大家搭建一遍,其目的主要是为了让大家感受 Dock ...

  4. [phvia/dkc] Docker Compose 快速构建(LNMP+Node)运行环境

    快速构建(LNMP+Node)运行环境. dkc 在此作为 docker-compose 的缩写,你可以理解为 alias dkc=docker-compose 准备 安装 docker 选择1) 从 ...

  5. Docker Compose YML文件配置

    Docker Compose YML 默认的模板文件是 docker-compose.yml,其中定义的每个服务都必须通过 image 指令指定镜像或 build 指令(需要 Dockerfile)来 ...

  6. docker compose yml 文件常用字段简介

    常用参数: version # 指定 compose 文件的版本 services # 定义所有的 service 信息, services 下面的第一级别的 key 既是一个 service 的名称 ...

  7. Linux下通过源码编译安装程序(configure/make/make install的作用,然后在/etc/profile文件里修改PATH环境变量)

    一.程序的组成部分 Linux下程序大都是由以下几部分组成: 二进制文件:也就是可以运行的程序文件 库文件:就是通常我们见到的lib目录下的文件 配置文件:这个不必多说,都知道 帮助文档:通常是我们在 ...

  8. win10家庭版更改本地账户名、C盘Users下文件夹名和环境变量等

    PS:由于四五年前装系统的时候懵懵懂懂的敲了一个中文用户名(有一个字还打错了,尴尬),导致现在打开cmd默认是C:\Users\中文名,path环境变量中也有中文路径,有时候有些程序的路径也是中文,这 ...

  9. Linux编程 12 (默认shell环境变量, PATH变量重要讲解)

    一 .概述 默认情况下, bash shell会用一些特定的环境变量来定义系统的环境.这些默认环境变量可以理解是上篇所讲的系统全局环境变量. 1.1 bash  shell支持的Bourne变量 Bo ...

随机推荐

  1. SAP常见查询组合

    做SAP开发的,SELECT是必不可少的.新语法出了不少'新鲜'的语法,用法也是五花八门. 新语法有新语法的好处,老语法有老语法的优势. 新语法里把很多的逻辑处理,分组,排重,内表处理全都放到一些关键 ...

  2. svn忽略target文件

    背景:最近项目转移到svn上 发现:项目从svn拉取下来到eclipse中,发现有大量的文件改动,一看都是一些.project之类的配置文件或者是target文件夹,或者下面的文件 这些东西肯定是不需 ...

  3. nginx日志设置

    环境:nginx1.16.1 (1)日志类型:access_log(访问日志) error_log(错误日志)rewrite_log 访问日志:通过访问日志我们可以得到用户的IP地址.浏览器的信息,请 ...

  4. 《linux就该这么学》课堂笔记17 分离解析、DHCP、电子邮件系统

    1.动态主机配置协议(DHCP,Dynamic Host Configuration Protocol) 自动管理局域网内主机的IP地址.子网掩码.网关地址及DNS地址等参数,可以有效地提升IP地址的 ...

  5. Ubuntu 16.04.6 + Win10 双系统时间错误且不一致

    1.在Win系统下,按Win键 + R,输入regedit 运行, 2.打开注册表,按照路径查找     计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet ...

  6. 09-赵志勇机器学习-k-means

    (草稿) k-means: 1. 随机选取n个中心 2. 计算每个点到各个中心的距离 3. 距离小于阈值的归成一类. 4. 计算新类的质心,作为下一次循环的n个中心 5. 直到新类的质心和对应本次循环 ...

  7. Python 模块A

    模块的四种形式 自定义模块,例如自己定义的common.py就叫common模块 内置模块:python解释器自带的,不需要安装 第三方模块:需要自己安装,13万个库,无所不能,写库(弄得更简单) 包 ...

  8. testlink 1.9.13之后版本,将动作默认显示

    最近升级了testlink,从低版本升级到1.9.14,而作为用户来说,改变了用户习惯,感觉不太好,其中有一个用户习惯是,点击某一条用例或测试集时,要点击动作才能显示实际的内容,如下: 每次都点击很不 ...

  9. matlab-fsolve函数求解多元非线性方程

    记录一下代码,方便下次套用模板 options=optimset('MaxFunEvals',1e4,'MaxIter',1e4); [x,fval,exitflag] = fsolve(@(x) m ...

  10. 【mybatis】清空数据库表数据

    <update id="truncateTable"> truncate table ${tableName} </update> <update i ...