【问题标题】:Unable to connect to the mongodb instance running in a docker container from outside无法从外部连接到在 docker 容器中运行的 mongodb 实例
【发布时间】:2021-09-16 12:53:28
【问题描述】:

以下代码 sn -p 是我的“docker compose”文件的一部分,如您所见,内部端口 27017 已映射到 37017,以防止与主机开发机器上运行的 MongoDB 实例发生冲突:

version: '3.4'

services:
  mongo:
    image: mongo
    container_name: mongodb
    restart: always
    ports: 
      - 27017:37017

我在尝试连接到 docker 中的这个 mongo 实例和以下连接字符串时使用Compass,但 Compass 无法连接到数据库:

mongodb://host.docker.internal:37017

此配置中缺少什么使我无法连接到 docker 中的 mongodb?

【问题讨论】:

  • 您的ports: 是倒退的:您将主机上的端口 27017(...应该有冲突?)映射到容器内的端口 37017,但那里没有任何监听。如果客户端也在一个容器中,你可以将它附加到同一个网络(或在同一个 Compose 文件中运行)并使用mongodb://mongo:27017 连接;这不需要或使用 ports: 并且不会与非容器 MongoDB 冲突。

标签: mongodb docker docker-compose


【解决方案1】:

这个答案归功于 David Maze。切换端口号解决了这个问题。正确的 yaml 如下所示:

version: '3.4'

services:
  mongo:
    image: mongo
    container_name: mongodb
    restart: always
    ports: 
      - 37017:27017

【讨论】:

    猜你喜欢
    • 2020-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-31
    • 2020-12-07
    • 2020-06-12
    • 1970-01-01
    相关资源
    最近更新 更多