Ungültiger Docker-Compose-Typ, sollte ein String sein

19

Ich habe die folgende Umgebungsvariable in einer docker-compose.yml-Datei konfiguriert:

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

Beim Versuch zu rennen docker-compose uperhalte ich den folgenden Fehler:

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

Ich muss die Umgebungsvariable auf einen JSON-String setzen (siehe https://github.com/lorenwest/node-config/wiki/Environment-Variables#node_config )

Mache ich hier etwas falsch? Kann ich das irgendwie zum Laufen bringen?

Tri Nguyen
quelle
Ich denke, das Problem kommt aus dem Doppelpunkt in der Mitte, laut diesem Kommentar zum Github-Problem sollte die Verwendung eines Diktats anstelle einer Liste funktionieren (Entfernen des Führenden -vor NODE_CONFIG
Tensibai

Antworten:

9

Die Docker Compose-Dateireferenz besagt , dass Umgebungsvariablen als VARIABLE=valueArray-Elemente definiert sind. In Ihrem Fall müsste die Datei docker-compose.yml folgendermaßen geändert werden:

version: '3'
services:
  server:
    ports:
     - 13045:3000
    environment:
     - NODE_CONFIG='{"DATABASE_URL":"http://db:5984"}'
Hexaholic
quelle
Nee. Ich habe es zuerst versucht, es funktioniert nicht.
Tri Nguyen
@TriNguyen Seltsam, das funktioniert für mich
Hexaholic
Nun, der Build würde durchlaufen, aber der Knotenprozess nimmt ihn nicht auf.
Tri Nguyen
2

Die args-Elemente selbst müssen eine Zeichenfolge sein

  args:
    - 'MAVEN_USER=$MAVEN_USER'
    - 'MAVEN_PASSWORD=$MAVEN_PASSWORD'
Richard Collette
quelle
Ja, das hat heute bei mir funktioniert.
Adam Mendoza
2

Sie müssen den Bindestrich vor der Variablen entfernen. Verwenden Sie die folgende Syntax:

   environment:
     NODE_CONFIG: '{"DATABASE_URL":"http://db:5984"}'
Jumshud
quelle