Docker Express Node.js应用程序容器未与MongoDB容器连接,出现错误TransientTransactionError

时间:2019-02-24 01:25:14

标签: node.js mongodb docker express docker-compose

我处于一个奇怪的困境中。我创建了一个节点应用程序,并且该应用程序需要(通过docker容器)连接到MongoDB,我创建了一个docker-compose文件,如下所示:

version: "3"
services:
  mongo:
     image: mongo
     expose:
      - 27017
     volumes:
      - ./data/db:/data/db

  my-node:
    image: "<MY_IMAGE_PATH>:latest"
    deploy:
      replicas: 1
      restart_policy:
        condition: on-failure
    working_dir: /opt/app
    ports:
      - "2000:2000"
    volumes:
      - ./mod:/usr/app
    networks:
      - webnet
    command: "node app.js"
networks:
  webnet:

我正在使用mongo官方图片。我从上面的配置中省略了我的docker镜像。我已经设置了许多配置,但是我无法连接到mongoDB(是的,我也更改了node.js应用程序内的MongoDB uri)。但是无论何时我deploying docker-compose,我在启动时的申请总是给我MongoNetworkError中的TransientTransactionError。几个小时以来,我无法理解问题出在哪里。

另一件事是当我运行docker-compose文件时,我收到以下日志:

Creating network server_default
Creating network server_webnet
Creating service server_mongo
Creating service server_feed-grabber

这两个服务是否在不同的网络中?如果是,那该如何解决?

其他信息:

  • 在我尝试过的node.js应用程序MongoDB uri中, mongodb://mongo:27017/MyDB
  • 我正在使用以下命令运行docker-compose:docker stack deploy -c docker-compose.yml server
  • 我的node.js映像是Ubuntu 18

有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

对我来说是

1-通过运行命令获取IP

  

docker-machine ip

2-不要转到本地主机/端口,请转到您的IP /端口,例如:http://192.168.99.100:8080