首頁 > 後端開發 > Golang > 如何將 Docker 容器中的 Go 應用程式連接到本機 MongoDB 實例?

如何將 Docker 容器中的 Go 應用程式連接到本機 MongoDB 實例?

Linda Hamilton
發布: 2024-11-16 19:07:03
原創
1017 人瀏覽過

How can I connect a Go application in a Docker container to a local MongoDB instance?

使用本地Mongo 連線對Go 應用程式進行Docker 化

使用Docker 處理Golang 專案時,整合本地Mongo 資料庫會帶來連線挑戰。如果使用MongoDB的Go專案在Docker之外運行,則資料庫連線成功。但是,當同一個專案在 Docker 容器中執行時,連線會失敗。

了解問題

Docker 為容器化應用程式建立虛擬環境。這意味著容器在獨立的網路空間中運行,與主機系統不同。因此,連接到外部資源(例如本地運行的 MongoDB 實例)會出現問題。

解決方案:利用host.docker.internal

Docker 分配唯一的IP 位址為每個容器提供一個特殊的主機名稱“host.docker.internal” 。此主機名稱可作為從容器內連接到主機系統的閘道。由於 MongoDB 在主機系統本地運行,使用“host.docker.internal”作為其主機名稱可以解決連線問題。

修改Dockerfile

合併此解決方案,修改Dockerfile 如下:

FROM golang
WORKDIR $GOPATH/src/myapp
ADD . /go/src/myapp
RUN go get ./...
RUN go install myapp
ENV MONGO_HOST=host.docker.internal
CMD /go/bin/myapp --mongodbhost=$MONGO_HOST
EXPOSE 8080
EXPOSE 27017
登入後複製

連接字符串

在Go 應用程式中,更新MongoDB 連線字串以使用「host.docker.internal」作為主機名稱。例如:

connectionString := fmt.Sprintf("mongodb://host.docker.internal:21017/database")
client, err := mongo.Connect(ctx, options.Client().ApplyURI(connectionString))
登入後複製

以上是如何將 Docker 容器中的 Go 應用程式連接到本機 MongoDB 實例?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板