ホームページ >バックエンド開発 >Golang >pgAdmin が正常に接続すると、Go アプリが Docker Compose Postgres への「接続を拒否」されるのはなぜですか?

pgAdmin が正常に接続すると、Go アプリが Docker Compose Postgres への「接続を拒否」されるのはなぜですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-24 12:17:15275ブラウズ

Why Does My Go App Get

Docker-Compose Postgres 接続が拒否されました: 接続の問題の解決

pg-admin および Go を使用した Postgres DB を含む docker-compose セットアップでは、 pg-admin は正常に接続できても、Go と Postgres の間で接続の問題が発生する場合があります。この記事では、考えられる原因を詳しく調べ、解決策を示します。

根本原因

この問題は、データベース接続 URI で指定されたホスト名が原因で発生します。環境変数は「postgres」を指していますが、Postgres の Docker コンテナ/サービス名は「database」です。この不一致により、Go は接続を確立できません。

解決策

考えられる解決策は 2 つあります。

オプション 1: コンテナ名を変更する

Docker 構成ファイルを変更してサービスを変更する

オプション 2: 明示的なホスト名フィールドを使用する

または、明示的なホスト名フィールドをPostgres サービス構成:

これらのソリューションのいずれかにより、ホスト名が接続 URI が Postgres コンテナの名前と一致するため、Go は正常に接続を確立できます。

追加の考慮事項

複数のコンテナ サービスが効果的に通信するには、専用ネットワーク。これを行うには、同じネットワーク上に必要な各サービスに「ネットワーク」セクションを追加します。

最後に、構成ファイルの最後にネットワークを定義します。

以上がpgAdmin が正常に接続すると、Go アプリが Docker Compose Postgres への「接続を拒否」されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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