首頁 > 後端開發 > Golang > 為什麼 pgAdmin 連線成功後,我的 Go 應用程式與 Docker Compose Postgres 的連線被拒絕?

為什麼 pgAdmin 連線成功後,我的 Go 應用程式與 Docker Compose Postgres 的連線被拒絕?

Patricia Arquette
發布: 2024-12-24 12:17:15
原創
270 人瀏覽過

Why Does My Go App Get

Docker-Compose Postgres 連接被拒絕:解決連接問題

在涉及帶有pg-admin 和Go 的Postgres DB 的docker-DB 的docker-DB 的docker compose 設定中,即使pg-admin 可以成功連接,您也可能會遇到Go 和Postgres之間的連接問題。本文深入探討了潛在原因並提供了解決方案。

根本原因

該問題是由於資料庫連接 URI 中指定的主機名稱引起的。雖然環境變數指向“postgres”,但 Postgres 的 Docker 容器/服務名稱是“database”。這種差異會導致 Go 無法建立連線。

有兩種可能的解決方案:

選項1:更改容器名稱

修改Docker compose檔案以變更服務名稱

database:
  build: database
  restart: always
  hostname: postgres
登入後複製
登入後複製

選項2:使用顯式主機名字段

或者,您可以為Postgres 服務新增明確主機名字段配置:

database:
  build: database
  restart: always
  hostname: postgres
登入後複製
登入後複製

這些解決方案中的任何一個都會確保主機名稱連接URI 與Postgres容器的名稱匹配,允許 Go 建立成功的連接。

其他注意事項

為了使多個容器服務有效通信,您可以考慮建立專用的網路。為此,請為同一網路上所需的每個服務新增「網路」部分。

database:
  # ...

  networks:
    - mynet

backend:
  # ...

  networks:
    - mynet
登入後複製

最後,在撰寫文件的末尾定義網路:

networks:
  mynet:
    name: my-shared-db-network
登入後複製

以上是為什麼 pgAdmin 連線成功後,我的 Go 應用程式與 Docker Compose Postgres 的連線被拒絕?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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