繁体   English   中英

将一个Docker容器中的nodejs应用程序连接到Docker Swarm中另一个容器中的mongodb

[英]Connect nodejs App in one docker container to mongodb in another on Docker Swarm

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

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

我在节点应用程序中使用什么主机名以使其可以连接到另一个容器中的mongodb(当前在同一节点上,但是如果我设置了群集,则可以在其他节点上)。

我尝试过网桥,网络,主机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:

webnet不是主机。 这是mongo-database
因此,将webnet更改为mongo-database

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

要检查mongo-database通信,请进入nodejs容器,然后尝试ping mongo-database

ping mongo-database 

如果可行,您就知道服务器可以与mongo实例通信。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM