无法连接到在 docker 容器中运行的 MongoDB

时间:2021-05-31 16:23:27

标签: mongodb docker go

我在这样的 docker 容器中运行 MongoDB

docker run --name mongo -d -p 27017:27107 mongo

查看 docker ps 个节目

77f1a11295c3 mongo "docker-entrypoint.s…" 20 minutes ago Up 20 minutes 27017/tcp, 0.0.0.0:27017->27107/tcp mongo

所以它在正确映射端口的情况下运行。

当我尝试通过 Intellij 设置连接时

Intellij

它失败了

com.mongodb.MongoTimeoutException: Timed out after 10000 ms while waiting to connect. Client view of cluster state is {type=UNKNOWN, servers=[{address=localhost:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketReadException: Exception receiving message}, caused by {java.net.SocketException: Connection reset}}].

当我尝试从 golang 网络服务器连接时

clientOptions := options.Client().ApplyURI("mongodb://localhost:27017") 客户端,错误:= mongo.Connect(context.TODO(), clientOptions)

我收到此错误并关闭了 Web 服务器:

server selection error: server selection timeout, current topology: { Type: Unknown, Servers: [{ Addr: localhost:27017, Type: Unknown, Average RTT: 0, Last error: connection() error occured during connection handshake: connection(localhost:27017[-64]) incomplete read of message header: read tcp 127.0.0.1:40700->127.0.0.1:27017: read: connection reset by peer }, ] }

这是 MongoDB docker 映像中的错误,还是我需要做其他事情?

2 个答案:

答案 0 :(得分:0)

我认为您在创建容器时有一个拼写错误。 27017 and 27107

docker run --name mongo -d -p 27017:27017 mongo

这在 docker ps 命令中清晰可见。

你能试试看能不能解决问题?

答案 1 :(得分:0)

正如@fly2matrix 所说,你有一个错字,我相信你还有另一个问题:

  1. 您转发端口 27017:27107,其中容器端口不正确。检查 27107 而不是 27017
  2. 我在您的代码中看到短语 localhost,看来您正在连接到 localhost 而不是 mongo