我有一个 YAML 标量,当我尝试评估我的 docker-compose.yml文件时,它会抛出以下错误:
docker-compose.yml
中的“环境”选项的内插格式无效 Service“ time _ service”: “ ${ Time.now }”
亚穆尔:
--- version: '2' services: time_service: build: "." environment: TIME: "${Time.now}"
我如何保持相同的字符串输出作为写,但避免有多克-撰写解释为错误的字符串插值?
通过复制 这篇文章中 %字符的建议找到了答案
%
它需要一个双美元符号 $$。
$$
所以我需要 "$${Time.now}",它的计算结果是 "${Time.now}"
"$${Time.now}"
"${Time.now}"
当您的配置需要时,您可以使用 $$(双美元符号) 字面上的美元符号。
你正在触发 docker-compose变量替换,这是很好的文档 给你:
docker-compose
支持 $VARIABLE和 ${VARIABLE}语法,不支持扩展的 shell 样式特性,如 ${VARIABLE-default}和 ${VARIABLE/foo/bar}。 当您的配置需要字面的美元符号时,可以使用 $$(双美元符号)。这也防止 Compose 插值,因此 $$允许您引用您不希望 Compose 处理的环境变量。
支持 $VARIABLE和 ${VARIABLE}语法,不支持扩展的 shell 样式特性,如 ${VARIABLE-default}和 ${VARIABLE/foo/bar}。
$VARIABLE
${VARIABLE}
${VARIABLE-default}
${VARIABLE/foo/bar}
当您的配置需要字面的美元符号时,可以使用 $$(双美元符号)。这也防止 Compose 插值,因此 $$允许您引用您不希望 Compose 处理的环境变量。
docker-compose是用 Python 编写的,正如你在 Github中看到的,在很多程序中都可以找到获得特殊字符原始含义的加倍机制,我自己在编程时就需要使用这种机制,早在1984年。