You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Docker Compose(.env/yml)将主机已有环境变量传入容器

如何通过Docker Compose传递主机已存在的环境变量到容器

下面提供两种无需硬编码变量值的实现方式,直接复用主机已有的TESTVARIABLE环境变量:

方法一:直接在docker-compose.yml中引用

在docker-compose.yml的environment字段里,用${变量名}的格式引用主机环境变量,Compose会自动读取主机当前环境中的对应值传入容器。

示例配置:

version: '3.8'
services:
  my-service:
    image: nginx:alpine
    environment:
      # 直接引用主机的TESTVARIABLE变量
      - TESTVARIABLE=${TESTVARIABLE}

如果需要给变量设置默认值(防止主机未定义该变量时容器启动失败),可以写成:

- TESTVARIABLE=${TESTVARIABLE:-default_value}

执行docker-compose up即可完成变量传递,注意要确保执行命令的Shell能访问到主机的TESTVARIABLE变量(临时设置的变量需在当前Shell会话中执行命令)。

方法二:通过.env文件间接传递

如果习惯用.env文件统一管理环境变量,但不想硬编码值,可以在.env文件中引用主机变量,再让Compose加载该文件。

首先创建.env文件:

# 引用主机的TESTVARIABLE变量
TESTVARIABLE=${TESTVARIABLE}

然后在docker-compose.yml中配置加载该文件:

version: '3.8'
services:
  my-service:
    image: nginx:alpine
    env_file:
      - .env

同样执行docker-compose up,Compose会先从.env文件解析变量(实际读取主机环境值),再传入容器。

内容的提问来源于stack exchange,提问作者Demetris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 10:45:41