在容器的环境中设置环境变量
在服务配置中有一个显式条目来实现此目的之前,不会设置容器的环境。借助 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"使用.envfile 允许您使用相同的文件供普通docker run --env-file ...命令或共享相同的.env文件,而无需复制长environmentYAML 块。
它还可以帮助您将环境变量与主配置文件分开,从而提供更有条理和安全的方式来管理敏感信息,因为您不需要将.env文件。
这env_file属性还允许您使用多个.env文件。
通往.env文件中,在env_file属性,它们相对于compose.yml文件。
重要
插值
.envfiles 是 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. - 值
.envfile 可以从命令行使用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 中同一变量的值或环境文件。