如何在Docker撰写文件中转义$符号?


90

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

错误:服务“ time_service”中“环境”选项的无效插值格式:“ $ {Time.now}”

YAML:

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

如何保持与写入相同的字符串输出,但避免让docker-compose将其解释为错误的字符串插值?


1
解释该字符串的不是YAML分析器。YAML不知道${}。解释是由docker-composePython编写的,并且是用Python编写的,因此标记ruby也不合适。
Anthon

我删除了错误的假设,即这是YAML问题。这导致至少一个人被误导并浪费时间
Anthon

Answers:


130

您正在找到docker-compose变量替代,此处对此进行了详细记录:

这两个$VARIABLE${VARIABLE}语法的支持。不支持扩展的外壳样式功能,例如${VARIABLE-default}${VARIABLE/foo/bar}

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

docker-compose是用Python编写的,就像您在github上看到的那样,可以在很多程序中找到加倍机制来获得特殊字符的原始含义,我需要自己在编程时使用它,最早可以追溯到1984年。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.