2017-08-11 253 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

相關問題