从容器化的 Go 应用程序连接到本地 MongoDB

我已按照https://tsmx.net/docker-local-mongodb/中的说明进行操作,但仍然出现以下错误:

**恐慌:无法连接到 MongoDB(本地):没有可访问的服务器 **

我什至尝试了以下但仍然遇到相同的错误:

_ = pflag.String("mongodb-addr", "127.0.0.1:27017", "MongoDB connection address")

我的连接代码如下:

dbAddr := d.cfg.GetString("mongodb-addr")
session, err := mgo.Dial(dbAddr)

而我的 docker run 命令如下:

docker run image_name

我正在使用 macOS Monterey。任何帮助将不胜感激。谢谢。


catspeake
浏览 108回答 3
3回答

UYOU

如果应用程序和 MongoDB 在同一个 docker 网络上,则使用 docker 名称连接到 MongoDB 容器。如果 MongoDB 在应用程序在 docker 容器中运行的服务器中运行,则使用服务器的 IP 与 MongoDB 通信。127.0.0.1从容器内将尝试在与应用程序相同的 Docker 中找到 MongoDB。

动漫人物

如果你像这样运行 mongo :mongo:    image: mongo    restart: always    volumes:       - ./mongo-data:/data/db    env_file: .env    ports:       - 27017:27017    environment:      MONGO_INITDB_ROOT_USERNAME: ${MONGO_USERNAME}      MONGO_INITDB_ROOT_PASSWORD: ${MONGO_PASSWORD}然后你可以像这样从 Go 连接:var cred options.Credentialcred.Username = MongoUsernamecred.Password = MongoPasswordclientOption := options.Client().ApplyURI(mongodb://mongodb:27017).SetAuth(cred)

慕斯王

我遇到了同样的问题,这个命令对我有用,这里提到过。Docker 提供了一个主机网络,让容器可以共享主机的网络堆栈。这种方法意味着容器内的本地主机解析为物理主机,而不是容器本身。docker run -d --network=host my-container:latest希望它能帮助别人。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go