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

问题描述 投票:50回答:2

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

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

Yamla:

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

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

escaping docker-compose
2个回答
88
投票

你正在击中qazxsw poi变量替换,这是有充分证据的qazxsw poi:

支持docker-composehere语法。不支持扩展的shell样式功能,例如$VARIABLE${VARIABLE}

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

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


28
投票

通过复制docker-composegithub字符的建议找到答案

它需要一个双美元符号%

所以我需要this post,评估为$$

© www.soinside.com 2019 - 2024. All rights reserved.