【问题标题】:Cannot connect from inside docker swarm cluster to external mongodb service无法从 docker swarm 集群内部连接到外部 mongodb 服务
【发布时间】:2017-06-22 16:05:21
【问题描述】:

如果我运行后端的单个 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

【问题讨论】:

  • 你能显示 docker compose 文件的内容,以及你如何启动单个容器吗?
  • @MiguelMarques 更新问题
  • 通常你使用相同的 docker-compose.yaml 文件启动 mongo ......你不是那么上面假设 mongo 在上面之前独立启动......这是你在做什么?
  • @ScottStensland 我不使用 docker 来启动 mongodb。我像往常一样在主机上运行它。

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


【解决方案1】:

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

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

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

【讨论】:

  • "1337:8080" - 这是我已经写过的后端端口,mongodb 在主机上运行,​​而不是在 DOCKER 中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-24
  • 2020-08-15
  • 1970-01-01
  • 1970-01-01
  • 2018-11-08
  • 1970-01-01
相关资源
最近更新 更多