Docker-Compose Postgres 連線被拒絕:解決連線問題
在使用Postgres 的Docker-Compose 設定中,您描述了一個問題:可以使用pg-admin 連線到Postgres,但在嘗試從下列位置連線時遇到連線問題Go。
問題源自於您在 Go 程式碼中引用資料庫主機名稱的方式。您使用 POSTGRES_HOST 作為 postgres,這是 Docker-Compose 配置中 Postgres 的容器/服務名稱。但是,在 Go 程式碼中,您正在連接到資料庫,這是資料庫服務的實際容器名稱。
要解決此問題,您有兩個選項:
選項1:更改Docker-Compose 中的容器名稱
將docker-compose .yaml 檔案中資料庫服務的名稱從database 變更為postgres。這將使容器名稱和您在 Go 程式碼中使用的主機名稱相符。
選項2:明確主機名字段
或者,您可以新增明確主機名稱Docker-Compose 配置中資料庫服務的欄位:
database: build: database restart: always hostname: postgres
這設定資料庫容器的主機名稱到postgres,它與您在Go 程式碼中引用的主機名稱相符。
其他注意事項
此外,您可能需要考慮在 Docker 中建立專用網路 -編寫配置以確保容器之間能夠安全、高效地通訊。操作方法如下:
在docker-compose.yaml 檔案中,為每個應使用專用網路的服務新增一個網路部分,如下所示:
database: # ... networks: - mynet backend: # ... networks: - mynet
然後,定義docker -compose.yaml 檔案末尾的網路:
networks: mynet: name: my-shared-db-network
這將建立一個名為的新網路您的容器可以使用my-shared-db-network 進行通訊。
透過實作這些解決方案之一,您應該能夠在 Docker-Compose 設定中從 Go 成功連接到 Postgres 資料庫。
以上是儘管 pgAdmin 連線成功,為什麼我的 Go 應用程式拒絕連線到我的 Docker Compose Postgres 資料庫?的詳細內容。更多資訊請關注PHP中文網其他相關文章!