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?

Tri Nguyen
la source
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"}'
Hexaholic
la source
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'
Richard Collette
la source
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"}'
Jumshud
la source