J'ai un scalaire YAML qui génère l'erreur suivante lorsque j'essaie d'évaluer mon docker-compose.yml
fichier:
ERREUR: format d'interpolation non valide pour l'option "environment" du service "time_service": "$ {Time.now}"
YAML:
---
version: '2'
services:
time_service:
build: "."
environment:
TIME: "${Time.now}"
Comment puis-je conserver la même sortie de chaîne que celle écrite, tout en évitant que le composeur-docker l'interprète comme une interpolation de chaîne défectueuse?
Vous frappez le docker-compose
station variable, bien documentée ici :
Tous les deux
$VARIABLE
et${VARIABLE}
_ syntaxe sont supportés. Fonctionnalités de style shell étendu, telles que${VARIABLE-default}
et${VARIABLE/foo/bar}
, ne sont pas supportés.Vous pouvez utiliser un
$$
(signe dollar double) lorsque votre configuration nécessite un signe dollar littéral. Cela empêche également Compose d'interpoler une valeur, donc un$$
vous permet de faire référence à des variables d’environnement que vous ne souhaitez pas traiter par Compose.
docker-compose
est écrit en Python, comme vous le voyez sur github , le mécanisme de doublage permettant d’obtenir la signification originale des caractères spéciaux peut être trouvé dans de nombreux programmes; j’avais besoin de l’utiliser moi-même pendant la programmation en 1984.
Trouvé la réponse en copiant la suggestion de %
caractères dans ce post
Il faut un double signe dollar $$
.
Donc j'avais besoin de "$${Time.now}"
, qui évalue à "${Time.now}"