# env\_file

添加来自一个文件的环境变量。可以是单个值或者一个列表值。

如果通过docker-compose -f FILE的形式指定一个Compose文件，env\_file文件的路径是相对于Compose文件所在的路径的。

声明在environment部分的环境变量会覆盖这些值，即使这些值是空值或未定义的值。

```
 env_file: .env
```

```
 env_file:
   - ./common.env
   - ./apps/web.env
   - /opt/runtime_opts.env
```

env file文件中的内容是以VAR=VAL定义的。#开头的行会被当成注释并且被忽视。空行也会被忽视。

```
 # Set Rails/Rack environment
 RACK_ENV=development
```

Note:

如果服务指定了build选项，env文件中定义的变量在build时是不可见的。使用build的args子选项来定义构建时的环境变量。

VAL的值被使用且不会再被更改。例如，如果一个值被引号包围，引号会被包含在值中传递给Compose。

需要记住的是，列表中的文件顺序在决定赋给多次出现的变量的值时是非常重要的。列表中的文件处理顺序是从上到下的。对于相同的变量在a.env指定了，然后在b,env中分配了一个不同的值，如果b,env在列表的位置是在a.env的下面，那么b.env中的值会保留。例如下面的例子：

```
 services:
   some-service:
     env_file:
       - a.env
       - b.env
```

添加下面的文件：

```
 # a.env
 VAR=1
```

```
 # b.env
 VAR=hello
```

$VAR的值为hello。
