【问题标题】:nodejs server cannot link Redis and MongoDB in the same Docker-Compose yml filenodejs 服务器无法在同一个 Docker-Compose yml 文件中链接 Redis 和 MongoDB
【发布时间】:2017-07-01 13:18:35
【问题描述】:

我建立了一个快速服务器并链接到 mongo db 和 redis db。
我已经分别使用了docker run server / mongo / redis 并且服务器工作正常。
但是,当我使用 docker-compose 时,它会显示错误

redisdb 错误:{ 错误:Redis 连接到 localhost:6379 失败 - 连接 ECONNREFUSED 127.0.0.1:6379 ....
MongoError: 首次连接时无法连接到服务器 [localhost:27017] ....

我使用docker ps 进行检查,所有三个容器都在运行。

这是我的 docker-compose.yml

version: "2"
services:
  mongo:
    image: mongo:latest
    ports:
        - "27017:27017"
  redis:
    image: redis:latest
    ports:
        - "6379:6379"
  web:
    build: .
    links:
      - mongo
      - redis
    depends_on:
      - mongo
      - redis
    ports:
      - "3000:3000"

这是我设置数据库连接的方式

client = redis.createClient({ "host": process.env.REDIS_PORT_6379_TCP_ADDR || 'localhost', "port": "6379" });
mongoose.connect(`mongodb://${process.env.MONGO_PORT_27017_TCP_ADDR || 'mongodb://localhost:27017/chichat'}`);

我也尝试过docker-compose stop && docker-compose rm && docker-compose up,但仍然失败。

【问题讨论】:

    标签: node.js mongodb docker docker-compose


    【解决方案1】:

    您尝试连接到 localhost 而不是连接到 redis 或 mongo 容器。这是因为环境变量REDIS_PORT_6379_TCP_ADDRMONGO_PORT_27017_TCP_ADDR 没有设置。

    您有两种方法可以解决此问题:

    1) 在您的应用程序中定义 redismongo 主机名。

    client = redis.createClient({ "host":'redis', "port": "6379" });
    mongoose.connect('mongodb://mongo:27017/chichat'});
    

    2) 在docker-compose.yml文件中定义环境变量REDIS_PORT_6379_TCP_ADDRMONGO_PORT_27017_TCP_ADDR

    version: "2"
    services:
      mongo:
        image: mongo:latest
        ports:
            - "27017:27017"
      redis:
        image: redis:latest
        ports:
            - "6379:6379"
      web:
        build: .
        links:
          - mongo
          - redis
        depends_on:
          - mongo
          - redis
        ports:
          - "3000:3000"
        environment:
          - REDIS_PORT_6379_TCP_ADDR:"redis:6379"
          - MONGO_PORT_27017_TCP_ADDR:"mongodb://mongo:27017"
    

    第二种方式可能包含一些错误。我不认为在 nodejs 中究竟应该如何呈现 ULR。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-25
      • 1970-01-01
      • 1970-01-01
      • 2016-04-17
      • 1970-01-01
      • 2022-12-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多