在容器的环境中设置环境变量
在服务配置中有一个显式条目来实现此目的之前,不会设置容器的环境。借助 Compose,您可以通过两种方式使用 Compose 文件在容器中设置环境变量。
提示
不要使用环境变量将敏感信息(如密码)传递到容器中。请改用 secrets。
使用environment
属性
您可以直接在容器的环境中使用environment
属性在compose.yml
.
它支持 list 和 mapping 语法:
services:
webapp:
environment:
DEBUG: "true"
等效于
services:
webapp:
environment:
- DEBUG=true
看environment
属性,了解有关如何使用它的更多示例。
其他信息:
- 您可以选择不设置值,并将环境变量从 shell 直接传递到容器。它的工作方式与
docker run -e VARIABLE ...
:web: environment: - DEBUG
的DEBUG
变量取自运行 Compose 的 shell 中相同变量的值。请注意,在这种情况下,如果DEBUG
变量。
您还可以利用插值。在以下示例中,结果与上面的结果类似,但 Compose 会在
DEBUG
变量未在 shell 环境或.env
文件。web: environment: - DEBUG=${DEBUG}
使用env_file
属性
容器的环境也可以使用.env
文件以及env_file
属性.
services:
webapp:
env_file: "webapp.env"
使用.env
file 允许您使用相同的文件供普通docker run --env-file ...
命令或共享相同的.env
文件,而无需复制长environment
YAML 块。
它还可以帮助您将环境变量与主配置文件分开,从而提供更有条理和安全的方式来管理敏感信息,因为您不需要将.env
文件。
这env_file
属性还允许您使用多个.env
文件。
通往.env
文件中,在env_file
属性,它们相对于compose.yml
文件。
重要
插值
.env
files 是 Docker Compose CLI 的一项功能。运行时不支持
docker run --env-file ...
.
其他信息:
- 如果指定了多个文件,则按顺序计算这些文件,并且可以覆盖在先前文件中设置的值。
- 从 Docker Compose 版本 2.24.0 开始,您可以将
.env
文件,由env_file
属性,通过使用required
田。什么时候required
设置为false
和.env
文件缺失,则 Compose 会静默忽略该条目。env_file: - path: ./default.env required: true # default - path: ./override.env required: false
- 从 Docker Compose 版本 2.30.0 开始,您可以为
env_file
使用format
属性。有关更多信息,请参阅format
. - 值
.env
file 可以从命令行使用docker compose run -e
.
设置环境变量docker compose run --env
似docker run --env
中,您可以使用docker compose run --env
或其简称docker compose run -e
:
$ docker compose run -e DEBUG=1 web python console.py
其他信息:
你也可以通过不给它一个值来从 shell 或你的环境文件中传递一个变量:
$ docker compose run -e DEBUG web python console.py
的DEBUG
变量取自运行 Compose 的 shell 中同一变量的值或环境文件。