首頁 >後端開發 >Golang >Docker Compose Postgres 連線被拒絕:為什麼 pgAdmin 可以工作但我的 Go 應用程式失敗?

Docker Compose Postgres 連線被拒絕:為什麼 pgAdmin 可以工作但我的 Go 應用程式失敗?

Susan Sarandon
Susan Sarandon原創
2024-12-05 13:50:12380瀏覽

Docker Compose Postgres Connection Refused: Why Does pgAdmin Work But My Go App Fails?

[Docker Compose] Postgres 連線錯誤:解決「連線被拒絕」

問題:
嘗試

問題:嘗試

問題:

嘗試
問題:

database:
  build: database
  restart: always
  hostname: postgres  # Add this line
嘗試

問題:

嘗試
  • 問題:嘗試時與在Docker Compose 中運行的Postgres 資料庫建立Go連接,錯誤“連接被拒絕”是儘管能夠從 pg-admin 成功連接,但仍遇到此問題。
  • 原因:連接字串將資料庫主機名稱引用為“postgres”,它與 Docker Compose 中的服務名稱相符。然而,實際的容器名稱是“database”。

    str := fmt.Sprintf("database://%s:%s@%s:%s/%s?sslmode=disable", user, pass, "postgres", port, dbname)  # Update the hostname to "postgres"
  • 解決方案:
要解決此問題,請將 Docker Compose檔案中的資料庫容器重新命名為「postgres」或明確指定主機名稱:其他注意事項:網路:新增專用網路供多個容器服務進行通訊可能會改善連線能力。 連接字串: 確保 Go 程式碼中的連接字串 (_str_) 包含正確的主機名稱:

以上是Docker Compose Postgres 連線被拒絕:為什麼 pgAdmin 可以工作但我的 Go 應用程式失敗?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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