如何在Docker撰写文件中逃避$美元符号?

Nat*_*nna 61 escaping docker-compose

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

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

YAML:

---
version: '2'
services:
  time_service:
    build: "."
    environment:
      TIME: "${Time.now}"
Run Code Online (Sandbox Code Playgroud)

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

Ant*_*hon 92

你打的docker-compose变量substition,这是有据可查的在这里:

支持两者$VARIABLE${VARIABLE}语法.不支持扩展的shell样式功能,例如${VARIABLE-default}${VARIABLE/foo/bar}.

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

docker-compose是用Python编写的,正如你在github上看到的那样,在许多程序中可以找到获得特殊字符原始含义的加倍机制,我需要自己使用它,同时编程,早在1984年.


Nat*_*nna 28

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

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

所以我需要"$${Time.now}",评估为"${Time.now}"