mongodb - 无法从内部 docker swarm 集群连接到外部 mongodb 服务

标签 mongodb cluster-computing docker-compose docker-swarm

如果我运行后端的单个 docker 容器,它运行良好并连接到主机上运行的 mongodb。但是当我使用 docker-compose 运行我的后端时,它不会连接到 mongodb 并打印到控制台:

MongoError: failed to connect to server [12.345.678.912:27017] on first connect [MongoError: connection 0 to 12.345.678.912:27017 timed out]

docker-compose.yml 内容:

version: "3"
services:
  web:
    image: __BE-IMAGE__
    deploy:
      replicas: 1
      restart_policy:
        condition: on-failure
      resources:
        limits:
          cpus: "0.1"
          memory: 2048M
    ports:
      - "1337:8080"
    networks:
      - webnet
  visualizer:
    image: dockersamples/visualizer:stable
    ports:
      - "1340:8080"
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock"
    deploy:
      placement:
        constraints: [node.role == manager]
    networks:
      - webnet
networks:
  webnet:

我如何运行单个 docker 容器:

docker run -p 1337:8080 BE-IMAGE

最佳答案

您需要链接 mongo 端口,因为容器内部和外部的 localhost 不同

ports:
  - "1337:8080"
  - "27017:27017"

在端口定义上,左侧在容器外部,右侧在容器内部...您的错误表明容器内部无法看到端口 27017 ...上面只是链接了该 mongo 端口,以便容器可以访问该端口码头外的港​​口

关于mongodb - 无法从内部 docker swarm 集群连接到外部 mongodb 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44704450/

相关文章:

bash - 使用 git bash 启动 MongoDB

c - MPI_Init 只能由一个线程调用

spring-boot - Spring Logback Logger没有进入Elasticsearch

docker - 为什么我无法连接到Windows 10上的本地docker-compose容器?

mongodb - 无法从Docker中的Flask获取和发布数据到MongoDB

mongodb - 有没有可以有效检测重复项的NoSQL数据库?

mongodb - 在嵌套数组中添加新项目

mongodb - 在 mongodb map-reduce 中使用相同的键多次调用 reduce

java - BIRT 报告查看器异常

hadoop - Hadoop dfs.replicate 如何工作?