Comment puis-je échapper à un signe $ dollar dans un fichier de composition docker?
J'ai un scalaire YAML qui lance l'erreur suivante lorsque j'essaie d'évaluer mon fichier docker-compose.yml
:
Erreur: format d'interpolation non valide pour l'option "environnement" dans service "time_service": "$ {heure.maintenant}"
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, mais éviter que le docker-compose l'interprète comme une interpolation de chaîne défectueuse?
2 réponses
Vous frappez la substitution de variable docker-compose
, qui est bien documentée ici:
Les syntaxes $VARIABLE et ${VARIABLE} sont prises en charge. Les fonctionnalités étendues de style shell, telles que ${VARIABLE-default} et ${VARIABLE / foo / bar}, ne sont pas prises en charge.
Vous pouvez utiliser un $ $ (signe double-dollar) lorsque votre configuration a besoin d'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 faites pas voulez traité par composer.
docker-compose
est écrit en Python, comme vous le voyez sur github , le mécanisme de doublement pour obtenir le sens original des caractères spéciaux peut être trouvé dans de nombreux programmes, je devais l'utiliser moi-même, tout en programmant, dès 1984.
Trouvé la réponse en copiant la suggestion pour %
caractères dans ce post
Il nécessite un signe double dollar $$
.
J'avais donc besoin de "$${Time.now}"
, qui évalue à "${Time.now}"