将Docker容器中的nodejs App连接到Docker Swarm中的另一个docker容器中的mongodb

我已经在下面设置了docker stack(请参阅docker-compose.yml)。

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

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

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

注意:我将主机通过环境variables“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: 

webnet不是主机。 这是mongo-database
所以把webnet mongo-database

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

要检查mongo数据库通信,请进入nodejs容器,并尝试ping mongo-database

 ping mongo-database 

如果有效,你知道你的服务器可以和你的mongo实例通信。