docker-compose tipo no válido, debe ser una cadena

19

Tengo la siguiente variable de entorno configurada en un archivo docker-compose.yml:

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

Al intentar ejecutar docker-compose up, recibo este error:

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

Necesito que la variable de entorno se configure en una cadena JSON (consulte https://github.com/lorenwest/node-config/wiki/Environment-Variables#node_config )

¿Estoy haciendo algo mal aquí? ¿Puedo hacer que esto funcione de alguna manera?

Tri Nguyen
fuente
Creo que el problema proviene del colon en el medio, de acuerdo con este comentario sobre el problema de github usando un dict en lugar de la lista debería funcionar (eliminando el encabezado -antes de NODE_CONFIG
Tensibai

Respuestas:

9

Los estados de referencia del archivo Docker Compose indican que las variables de entorno se definen como VARIABLE=valueelementos de matriz. Para su caso, el archivo docker-compose.yml necesitaría ser cambiado a esto:

version: '3'
services:
  server:
    ports:
     - 13045:3000
    environment:
     - NODE_CONFIG='{"DATABASE_URL":"http://db:5984"}'
Hexaholico
fuente
No Lo intenté primero, no funciona.
Tri Nguyen
@TriNguyen Extraño, esto funciona para mí
Hexaholic
Bueno, la compilación pasaría, pero el proceso de nodo no lo recoge.
Tri Nguyen
2

Los elementos args deben ser una cadena.

  args:
    - 'MAVEN_USER=$MAVEN_USER'
    - 'MAVEN_PASSWORD=$MAVEN_PASSWORD'
Richard Collette
fuente
Sí, esto funcionó para mí hoy.
Adam Mendoza
2

Debe eliminar el guión delante de la variable. Use una sintaxis así:

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