我在docker-compose.yml文件中配置了以下环境变量:

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


尝试运行docker-compose up时,出现此错误:

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


我需要将环境变量设置为JSON字符串(请参阅https://github.com/lorenwest/node-config/wiki/Environment-Variables#node_config)

我在这里做错什么了吗?我能以某种方式使它工作吗?

评论

我认为问题来自中间的冒号,根据对github问题的此评论,使用dict而不是list应该可以解决(删除前导-在NODE_CONFIG
之前

#1 楼

Docker Compose文件参考指出,环境变量定义为VARIABLE=value数组元素。对于您的情况,需要将docker-compose.yml文件更改为此:

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


评论


不。我首先尝试过,但是没有用。

– Tri Nguyen
17年6月23日在13:18

@TriNguyen奇怪,这对我有用

–十六进制
17年6月23日在13:24

好吧,构建会顺利进行,但是节点进程不会执行。

– Tri Nguyen
17年6月23日在13:27

#2 楼

您需要删除变量前面的破折号。使用如下语法:

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


#3 楼

args元素本身需要为字符串

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


评论


是的,今天对我有用。

–亚当·门多萨(Adam Mendoza)
18-10-25在3:19