可以一个单独的扩展名为.env的文件中为Docker compose设置默认环境变量,文件放置在执行docker-compose命令时所在的目录即可生效,也就是说可以将多种版本的.env放置在不同的目录下,执行docker-compose命令时在那个目录,那个.env文件就会生效。如果在定义compose文件时又一次指定了某个环境变量,那么.env文件中定义的环境变量将会被覆盖。
语法规则
- 每行定义一个环境变量,格式为VAR=VAL。
- #开头的行为注释行,忽略。
- 忽略空白行。
- 对单引号双引号不作转义。
环境变量类型
能够定义的环境变量有两类,第一类就作变量代换。假如你需要定义多个compose文件,有多个compose文件中的服务需要使用某个相同版本的image。在这种情况下,如果版本号发生变更,则需要对每个compose文件进行修改,其实没有必要。可以将版本号当成环境变量定义在.env文件中,在每个compose文件中对这个环境进行引用、替换,这样当修改版本号时,只需要修改.env文件一个地方就可以,维护起来相当方便,如下例。
.env文件包含:
POSTGRES_VERSION=9.3
compose配置文件包含:
db:
image: "postgres:${POSTGRES_VERSION}"
第二类环境变量主要供compose命令在运行时使用,名称固定。主要作用是定义compose命令如何与docker交互。如下表: