写文目的

在写本文之前,我在做一个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. windows下搭建vue+webpack的开发环境

    1. 安装git其右键git bash here定位比cmd的命令行要准确,接下来的命令都是利用git bash here.2. 安装node.js一般利用vue创建项目是要搭配webpack项目构建 ...

  2. 中文版Postman测试需要登陆才能访问的接口(基于Cookie)

    ApiPost堪称增强版的中文postman,是一个支持团队协作,并可直接生成文档的API调试.管理工具.它支持模拟POST.GET.PUT等常见请求,是后台接口开发者或前端.接口测试人员不可多得的工 ...

  3. c++指针全攻略

    1.指针概念理解 int*  p      定义一个指针(推荐使用这种写法int* ,理解上有好处)        p 指针变量:        *   间接运算符(访问符),代表访问该地址所指向的空 ...

  4. dos2unix的使用

    由于在DOS(windows系统)下,文本文件的换行符为CRLF,而在Linux下换行符为LF,使用git进行代码管理时,git会自动进行CRLF和LF之间的转换,这个我们不用操心.而有时候,我们需要 ...

  5. Linux shell简单创建用户脚本

    前面介绍简单的shell编写规则. 现在开始编写一个简单的shell脚本. Linux shell介绍 编写shell脚本    1.创建脚本文件    2.根据需求,编写脚本    3.测试执行脚本 ...

  6. 'root'@'localhost'不能登录问题

    鉴于我在遇到这个问题时,在网上搜索到几十个答案都是进行更改密码解决该问题,然并没有卵用.最后还是让小编找到了解决方法,希望大家遇到该问题时能够节省时间.解决方法如下:   #mysql -u root ...

  7. HAProxy的调度算法

      HAProxy通过固定参数balance指明对后端服务器的调度算法,该参数可以配置在listen或backend选项中.   HAProxy的调度算法分为静态和动态调度算法,但是有些算法可以根据参 ...

  8. DDL(数据库定义语言)(五)

    一.数据定义语言(Data Definition Language)的基本操作 定义数据库.表等,包括CREATE语句.ALTER语句.DROP语句.CREATE语句用于创建数据库.数据表等,ALTE ...

  9. Matplotlib 绘制定制的直方图

    1.普通风格 代码 import numpy as np import matplotlib.pyplot as plt rng = np.random.RandomState(27) x = rng ...

  10. LOJ 3160: 「NOI2019」斗主地

    题目传送门:LOJ #3160. 简要题意: 有一个长度为 \(n\) 的序列 \(a\),初始时 \(a_i=i\) 或 \(a_i=i^2\),这取决于 \(\mathrm{type}\) 的值. ...