Как я могу избежать знака $доллара в файле сокета-докера?

У меня есть скаляр YAML, который бросает следующую ошибку, когда я пытаюсь оценить мой файл docker-compose.yml:

ОШИБКА: неверный формат интерполяции для опции "окружающая среда" в service "time_service": "$ {Time.now}"

YAML:

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

Как я могу поддерживать тот же вывод строки, что и написанный, но избегать того, чтобы компоновка docker интерпретировала его как ошибочную интерполяцию строк?

Ответы

Ответ 1

Вы попадаете в переменную подстановки docker-compose, которая хорошо документирована здесь:

Поддерживаются как $VARIABLE, так и ${VARIABLE} синтаксис. Расширенные функции стиля оболочки, такие как ${VARIABLE-default} и ${VARIABLE/foo/bar}, не поддерживаются.

Вы можете использовать знак $$ (знак двойного доллара), когда вашей конфигурации требуется буквальный знак доллара. Это также мешает Compose интерполировать значение, поэтому $$ позволяет ссылаться на переменные среды, которые вы не хотите обрабатывать с помощью Compose.

docker-compose написан на Python, как вы видите на github, механизм удвоения для получения исходного значения специальных символов может можно найти во многих программах, мне нужно было использовать это самостоятельно, в то время как программирование, еще в 1984 году.

Ответ 2

Найден ответ, скопировав предложение для % символов в этом сообщении

Для этого требуется знак двойного доллара $$.

Мне понадобился "$${Time.now}", который оценивается как "${Time.now}"