为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
catspeake 2023-03-07 17:28:55
我已按照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。任何帮助将不胜感激。谢谢。
查看完整描述

3 回答

?
UYOU

TA贡献1878条经验 获得超4个赞

如果应用程序和 MongoDB 在同一个 docker 网络上,则使用 docker 名称连接到 MongoDB 容器。

如果 MongoDB 在应用程序在 docker 容器中运行的服务器中运行,则使用服务器的 IP 与 MongoDB 通信。127.0.0.1从容器内将尝试在与应用程序相同的 Docker 中找到 MongoDB。


查看完整回答
反对 回复 2023-03-07
?
动漫人物

TA贡献1815条经验 获得超10个赞

如果你像这样运行 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.Credential

cred.Username = MongoUsername

cred.Password = MongoPassword

clientOption := options.Client().ApplyURI(mongodb://mongodb:27017).SetAuth(cred)


查看完整回答
反对 回复 2023-03-07
?
慕斯王

TA贡献1864条经验 获得超2个赞

我遇到了同样的问题,这个命令对我有用,这里提到过。

Docker 提供了一个主机网络,让容器可以共享主机的网络堆栈。这种方法意味着容器内的本地主机解析为物理主机,而不是容器本身。

docker run -d --network=host my-container:latest

希望它能帮助别人。


查看完整回答
反对 回复 2023-03-07
  • 3 回答
  • 0 关注
  • 104 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信