如何在一个 docker 组合文件中避免使用 $$符号?

我有一个 YAML 标量,当我尝试评估我的 docker-compose.yml文件时,它会抛出以下错误:

中的“环境”选项的内插格式无效 Service“ time _ service”: “ ${ Time.now }”

亚穆尔:

---
version: '2'
services:
time_service:
build: "."
environment:
TIME: "${Time.now}"

我如何保持相同的字符串输出作为写,但避免有多克-撰写解释为错误的字符串插值?

89565 次浏览

通过复制 这篇文章%字符的建议找到了答案

它需要一个双美元符号 $$

所以我需要 "$${Time.now}",它的计算结果是 "${Time.now}"

当您的配置需要时,您可以使用 $$(双美元符号) 字面上的美元符号。

你正在触发 docker-compose变量替换,这是很好的文档 给你:

支持 $VARIABLE${VARIABLE}语法,不支持扩展的 shell 样式特性,如 ${VARIABLE-default}${VARIABLE/foo/bar}

当您的配置需要字面的美元符号时,可以使用 $$(双美元符号)。这也防止 Compose 插值,因此 $$允许您引用您不希望 Compose 处理的环境变量。

docker-compose是用 Python 编写的,正如你在 Github中看到的,在很多程序中都可以找到获得特殊字符原始含义的加倍机制,我自己在编程时就需要使用这种机制,早在1984年。