docker-compose de type invalide, il doit s'agir d'une chaîne


19

J'ai la variable d'environnement suivante configurée dans un fichier docker-compose.yml:

version: '3'
services:
  server:
    ports:
     - 13045:3000
    environment:
     - NODE_CONFIG: '{"DATABASE_URL":"http://db:5984"}'

En essayant de courir docker-compose up, j'obtiens cette erreur:

services.server.environment contains {"NODE_CONFIG": "{\"DATABASE_URL\":\"http://db:5984\"}"}, which is an invalid type, it should be a string

J'ai besoin que la variable d'environnement soit définie sur une chaîne JSON (voir https://github.com/lorenwest/node-config/wiki/Environment-Variables#node_config )

Est-ce que je fais quelque chose de mal ici? Puis-je faire en sorte que cela fonctionne d'une manière ou d'une autre?


Je pense que le problème vient des deux points au milieu, selon ce commentaire sur le problème de github, l' utilisation d'un dict au lieu d'une liste devrait fonctionner (supprimer le -début avant NODE_CONFIG
Tensibai

Réponses:


9

La référence du fichier Docker Compose indique que les variables d'environnement sont définies comme des VARIABLE=valueéléments de tableau. Pour votre cas, le fichier docker-compose.yml devrait être modifié comme suit:

version: '3'
services:
  server:
    ports:
     - 13045:3000
    environment:
     - NODE_CONFIG='{"DATABASE_URL":"http://db:5984"}'

Nan. J'ai essayé ça d'abord, ça ne marche pas.
Tri Nguyen

@TriNguyen Strange, cela fonctionne pour moi
Hexaholic

Eh bien, la construction passerait, mais le processus de nœud ne le prend pas.
Tri Nguyen

2

Les éléments args eux-mêmes doivent être une chaîne

  args:
    - 'MAVEN_USER=$MAVEN_USER'
    - 'MAVEN_PASSWORD=$MAVEN_PASSWORD'

oui, cela a fonctionné pour moi aujourd'hui.
Adam Mendoza

2

Vous devez supprimer le tiret devant la variable. Utilisez une syntaxe comme ça:

   environment:
     NODE_CONFIG: '{"DATABASE_URL":"http://db:5984"}'
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.