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

Go 在使用 Docker 时无法连接到 Mongo 容器

Go 在使用 Docker 时无法连接到 Mongo 容器

Go
哔哔one 2022-08-01 18:03:40
我想运行 3 个服务:My Go程序,它将连接到另一个容器中的MongoDB蒙戈蒙戈快捷酒店这是我的docker-compose.yml:version: "3.7"services:  app:    image: test-go-docker    environment:      - MONGO_HST=mongo      - MONGO_PRT=27018  mongo:    image: mongo    ports:    - 27018:27017    volumes:    - /data/db  mongo-express:    image: mongo-express    ports:    - 8081:8081如您所见,我的Mongo数据库映射到端口217018,网络名称为mongo。我的Golang程序将通过环境变量(MONGO_HST和MONGO_PRT)获取主机名和端口。这是我的Go计划:package mainimport (    "context"    "fmt"    "go.mongodb.org/mongo-driver/mongo"    "go.mongodb.org/mongo-driver/mongo/options"    "net/http"    "os"    "time")type MyData struct {    Name string    Text string}func viewHandler(w http.ResponseWriter, r *http.Request) {    fmt.Fprintf(w, "Hello world!")}func main() {    mongoURI := "mongodb://" + os.Getenv("MONGO_HST") + ":" + os.Getenv("MONGO_PRT") + "/"    client, err := mongo.NewClient(options.Client().ApplyURI(mongoURI))    must(err)    ctx, cancel := context.WithTimeout(context.Background(), 20*time.Second)    defer cancel()    err = client.Connect(ctx)    collection := client.Database("test_db").Collection("test_collection")    data := MyData{        Name: "testing...",        Text: "Hello world",    }    _, err =collection.InsertOne(context.Background(), data)    must(err)    // Serve the page    http.HandleFunc("/", viewHandler)    err = http.ListenAndServe(":8000", nil)    must(err)}func must(err error) {    if err != nil {        fmt.Println("Some error...")        panic(err)    }}
查看完整描述

1 回答

?
繁花不似锦

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

容器之间的连接忽略 。使用目标容器的标准端口,在本例中为标准 MongoDB 端口 27017。ports:


services:

  app:

    environment:

      - MONGO_PRT=27017 # the standard port


  mongo:

    image: mongo

    # ports:            # not used for connections between containers

    # - 27018:27017     # only from outside Docker

Docker 文档中的 Compose 中的网络说得更多一些。


查看完整回答
反对 回复 2022-08-01
  • 1 回答
  • 0 关注
  • 197 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号