docker-composer - comment échapper à des variables d'environnement
Avec docker-compose
v2 variables d'environnement peuvent être établies par tout simplement:
enviroment:
- MONGO_PATH=mongodb://db-mongo:27017
La pleine docker-compose.yml
fichier:
version: '2'
services:
web:
build: .
environment:
- MONGO_PATH=mongodb://db-mongo:27017
ports:
- "3000:3000"
volumes:
- .:/app
- /app/node_modules
depends_on:
- db-mongo
- db-redis
db-mongo:
image: mongo
restart: unless-stopped
command: --smallfiles
ports:
- "27017:27017"
volumes:
- ./data:/data/db
[...]
Cependant, comment puis-je échapper à des variables d'environnement qui ne sont pas une simple chaîne de caractères?
{"database": {"data": {"host": "mongo"}}}
J'ai essayé:
NODE_CONFIG=\{"database": \{"data"\: \{"host": "mongo"\}, "session": \{"host": "redis" \}\}\}
NODE_CONFIG="\{"database": \{"data"\: \{"host": "mongo"\}, "session": \{"host": "redis" \}\}\}"
NODE_CONFIG='{"database": {"data": {"host": "mongo"}, "session": {"host": "redis" }}}'
ERREUR: yaml.analyseur.ParserError: lors du traitement d'un bloc de cartographie
"./docker-composer.yml", ligne 6, colonne 9 prévu , mais
trouvé '} "dans". /docker-composer.yml", ligne 6, colonne 92
OriginalL'auteur zurfyx | 2017-02-01
Vous devez vous connecter pour publier un commentaire.
Variables d'environnement (y compris leur nom), doivent être entièrement enveloppé à l'intérieur de guillemets simples ou doubles:
""
ou''
Et l'aide de guillemets doubles:
Il est remarquable de noter que l'utilisation des guillemets
""
, comme bash, permettra de placer des variables à l'intérieur de la variable d'environnement.docker composer ne devrait pas vous permettre de le faire sans les guillemets!!
OriginalL'auteur zurfyx