2017-08-11 256 views
0

我已经在下面设置了docker stack(请参阅docker-compose.yml)。在一个Docker容器中将nodejs应用连接到另一个Docker容器中的mongodb

它有2个服务: - 在一个(或多个)容器中运行的nodejs(环回)服务。 - 在另一个容器中运行的mongodb。

在我的节点应用程序中使用什么主机来允许它连接到另一个容器中的mongodb(当前位于同一个节点上,但如果设置swarm可能位于不同的节点上)。

我试过桥,webnet,主机IP等..但没有运气。

注意:我将主机传递到具有环境变量“MONGODB_SERVICE_SERVICE_HOST”的nodejs应用程序中。

在此先感谢!

version: "3" 
services: 
    web: 
    image: myaccount/loopback-app:latest 
    deploy: 
     replicas: 2 
     restart_policy: 
     condition: on-failure 
    ports: 
     - "8060:3000" 
    environment: 
     MONGODB_SERVICE_SERVICE_HOST: "webnet" 
    depends_on: 
     - mongo 
    networks: 
     - webnet 
    mongo-database: 
    image: mongo 
    ports: 
     - "27017:27017" 
    volumes: 
     - "/Users/jason/workspace/mongodb/db:/data/db" 
    deploy: 
     placement: 
     constraints: [node.role == manager] 
    networks: 
     - webnet 
networks: 
    webnet: 

回答

2

webnet是房东。这是mongo-database
因此将webnet更改为mongo-database

ENV MONGO_URL "mongodb://containerName:27017/dbName" 

要检查Mongo的数据库之间的通信,进入容器的NodeJS,并尝试ping mongo-database

ping mongo-database 

如果一切正常,你知道你的服务器可以与您蒙戈实例进行通信。

+0

就是这样。主机是容器名称。不能更容易或更明显!谢谢 !! – Jason

+0

mathieu,虽然在本地开发上工作得很好,但是当它在AWS上运行时,节点应用无法连接到mongo数据库..任何建议我可能会丢失?谢谢 06:59:06 MongoError:第一次连接时无法连接到服务器[mongo-database:27017] [MongoError:connect ECONNREFUSED 10.0.1.2:27017] – Jason

相关问题