ホームページ >バックエンド開発 >Golang >Go アプリケーションが Docker Compose Postgres データベースに接続するときに「接続が拒否されました」エラーが発生するのはなぜですか?

Go アプリケーションが Docker Compose Postgres データベースに接続するときに「接続が拒否されました」エラーが発生するのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-21 01:04:11147ブラウズ

Why Does My Go Application Get a

Docker Compose Postgres 接続の拒否

問題:

データベース接続を確立しようとしたときDocker Compose で実行されている Postgres データベースに移動すると、エラー「dial tcp」が発生します127.0.0.1:5432: connect: connection requested" が発生します。

解決策:

この問題は、接続文字列内のホスト名参照が間違っていることが原因で発生します。

ホスト名参照:

データベースのホスト名は、「POSTGRES_HOST」環境変数で「postgres」として参照されます。ただし、docker-compose ファイル内のデータベースのコンテナ/サービス名は「database」です。

解決策:

この問題を解決するには、2 つのオプションがあります。 :

  1. コンテナ/サービス名を変更します: docker-compose 内ファイルで、「database」サービス名を「postgres」に変更します。
  2. 明示的なホスト名を追加します: docker-compose ファイルの「database」サービスに「hostname」フィールドを追加します。明示的に「postgres」に設定します。

ネットワーク構成(オプション):

サービス間の分離と通信を向上させるために、データベースとアプリケーション コンテナー用の専用ネットワークを作成することをお勧めします。これを行うには:

  1. 共有ネットワークを使用する各サービスに「ネットワーク」構成を追加します。
  2. docker-compose ファイルの最後に名前を付けてネットワークを定義します。そしてオプションのオプション。

例:

database:
  # ...

  networks:
    - mynet

backend:
  # ...

  networks:
    - mynet

networks:
  mynet:
    name: my-shared-db-network

以上がGo アプリケーションが Docker Compose Postgres データベースに接続するときに「接続が拒否されました」エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。