帮助中心 > 关于网络安全 > Docker Compose中的环境变量使用与动态配置
Docker Compose中的环境变量使用与动态配置
时间 : 2025-02-13 11:09:31
编辑 : Jtti

使用docker compose时可以通过环境变量来动态设置compose文件中的值,运行时把这些变量插入配置中。这样方式非常灵活,适合需要根据不同环境比如开发/测试/生产等动态调整配置的场景。在docker compose文件中,可以通过${VARIABLE_NAME}格式引用环境变量,这些变量能在运行时从以下来源获得:环境变量文件可以在项目根目录下创建一个.env文件定义变量。命令行参数可以通过以下命令获取e参数指定环境变量:

docker-compose

系统环境变量可以直接在操作系统中设置环境变量。如果现在当前有个简单docker compose文件docker-compose.yml:

version: '3.8'

services:

web:

image: "nginx:latest"

ports:

- "${WEB_PORT}:80"

environment:

- NGINX_HOST=${NGINX_HOST}

如果需要在项目根目录中创建一个.ev文件定义变量:

WEB_PORT=8080

NGINX_HOST=example.com

运行 docker-compose up 时,Docker Compose 会自动加载 .env 文件中的变量,并将它们插入到 docker-compose.yml 文件中。因此,WEB_PORT 和 NGINX_HOST 的值会被替换为 8080 和 example.com。

还可以用命令参数动态调整设置环境变量:

WEB_PORT=9090 NGINX_HOST=another-example.com docker-compose up

这样方式可以覆盖.env文件中定义的变量值。

还可以直接在操作环境中设置环境变量。如Linux或macOS上面运行:

export WEB_PORT=8080

export NGINX_HOST=example.com

变量未定义时的默认值,当某个变量未定义docker compose会报错,为了避免这样情况可以在docker-compose.yml文件中为变量设置默认值如:

ports:

- "${WEB_PORT:-8080}:80"

${WEB_PORT:-8080} 表示如果 WEB_PORT 未定义,则使用默认值8080。

环境变量的值必须是字符串,如果需要传递复杂都值需要确保格式正确,避免在.env文件中存储重要信息,如密码登敏感信息。敏感信息可以使用docker的secrets功能或环境变量管理工具。使用环境变量通过docker compose文件更加灵活适应不同部署环境。

相关内容

Yum和DNF中禁用或锁定软件包更新的方法 Linux中fkill实现用交互方式终止进程 Espanso提升打字效率的开源文本扩展器 32位和64位系统的关键差异与详细对比 服务器临时文件无权限怎么办 加拿大服务器ping值访问速度如何 Linux环境下SVG到PNG的转换方法 现有Linux服务器添加新磁盘的方法 Linux中带进度条的文件复制/移动方法 香港服务器硬件设备网络拓扑及带宽管理
返回

24/7/365 全天候支持我们时刻恭候您

帮助中心