如何通过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
相关产品推荐
相关产品推荐

