Docker Compose抛出无效类型错误

时间:2018-05-05 00:13:50

标签: node.js docker redis docker-compose

我遇到运行docker compose的问题。特别是我收到这个错误:

ERROR: The Compose file './docker-compose.yml' is invalid because:
services.login-service.environment contains {"REDIS_HOST": "redis-server"}, which is an invalid type, it should be a string

这是我的yml文件:

version: '3'

services:
  redis:
    image: redis
    ports:
      - 6379:6379
    networks:
      - my-network

  login-service:
    tty: true
    build: .
    volumes:
      - ./:/usr/src/app
    ports:
      - 3001:3001
    depends_on:
      - redis
    networks:
      - my-network
    environment:
      - REDIS_HOST: redis
    command: bash -c "./wait-for-it.sh redis:6379 -- npm install && npm run dev"

networks:
  my-network:

显然问题是我设置环境变量的地方,即使我看过多个使用相同语法的教程。它的目的是将REDIS_HOST设置为Docker在构建映像时分配给Redis的任何IP地址。我可能需要改变哪些见解才能使其正常工作?

2 个答案:

答案 0 :(得分:6)

有两种不同的实现方法。一个带有=符号,另一个带有:符号。检查以下示例以获取更多信息。

Docker编写带有=符号的环境。

version: '3'

services:
  webserver:
    environment:
      - USER=john
      - EMAIL=johh@gmail.com

Docker编写带有:符号的环境

version: '3'

services:
  webserver:
    environment:
      USER:john
      EMAIL:johh@gmail.com

答案 1 :(得分:1)

发生这种情况是因为前划线。您可以尝试不使用它,如下所示:

environment:
  REDIS_HOST: redis