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

如何在Docker Compose环境变量中传递字面量${HOSTNAME}而不被解析?

如何让Docker Compose传递字面量${HOSTNAME}环境变量而不解析

核心问题解析

你在docker-compose.yml里用$${HOSTNAME}的转义写法是正确的,问题出在对docker compose config命令的理解上:这个命令的作用是输出Docker Compose实际会使用的最终配置(包含转义处理后的格式),而不是帮你把转义符号还原成单美元符。但实际上,当你启动容器时,Docker Compose会正确将${HOSTNAME}作为字面量传递给应用。

验证方法

启动容器后,进入容器查看环境变量,就能确认结果符合预期:

docker exec <你的容器名> printenv REACT_APP_HOSTNAME

执行后会输出${HOSTNAME},这正是你需要传递给应用的字面量。

单引号写法的正确姿势

如果你想用单引号实现同样效果,需要确保整个环境变量条目被单引号包裹,YAML写法如下:

environment:
  - 'REACT_APP_HOSTNAME=${HOSTNAME}'

这样Docker Compose也不会解析${HOSTNAME},而是直接将其作为字面量传递。之前单引号没生效大概率是写法不符合YAML规范导致的。

总结

  • $${HOSTNAME}的转义写法是正确的,docker compose config输出保留双美元符是该命令的正常行为,不影响实际容器内的环境变量值。
  • 无论用双美元转义还是单引号包裹,最终容器内的应用都会收到${HOSTNAME}这个字面量环境变量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 13:00:07