首頁 >後端開發 >Golang >當遇到「連線被拒絕」時,如何從 Docker 中的 Go 應用程式連接到 MySQL 伺服器?

當遇到「連線被拒絕」時,如何從 Docker 中的 Go 應用程式連接到 MySQL 伺服器?

Linda Hamilton
Linda Hamilton原創
2024-10-30 05:33:28563瀏覽

How to Connect to a MySQL Server from a Go Application in Docker When Encountering

錯誤:在Docker 中從Go 連接到MySQL 伺服器時連接被拒絕

當嘗試從Docker 中運行的Go 應用程式連接到MySQL 伺服器時,開發人員可能會遇到出現以下錯誤:

dial tcp 127.0.0.1:3306: connect: connection refused

原因:

預設情況下,Docker 容器運行在隔離的網路空間中,使得運行在其中的應用程式無法直接存取主機機器的本機。

解決方案:

要解決此問題,請使用特殊主機名稱docker.for.mac.localhost 而不是本地主機。此位址可以透過使用Docker 網路與主機的服務進行通訊:

  1. 更新Go 程式碼中的連接字串:
<code class="go">db, err = sql.Open("mysql", dbUser+":"+dbPassword+"@tcp(docker.for.mac.localhost:3306)/"+dbName)</code>
  1. 如果使用Docker Compose,將以下行加入資料庫容器的服務定義下的docker-compose.yml 檔案中:
<code class="yml">ports:
  - "3306:3306"</code>

這將會對應主機的連接埠3306到容器的連接埠3306,允許Go 應用程式透過正確的連接埠進行連接。

以上是當遇到「連線被拒絕」時,如何從 Docker 中的 Go 應用程式連接到 MySQL 伺服器?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn