ホームページ >バックエンド開発 >Golang >Go アプリケーションが Docker Compose で Postgres 接続を拒否するのはなぜですか?

Go アプリケーションが Docker Compose で Postgres 接続を拒否するのはなぜですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-13 11:02:19688ブラウズ

Why Does My Go Application Refuse a Postgres Connection in Docker Compose?

Docker-Compose: Postgres への接続が拒否されました

Docker-compose セットアップ内から pg-admin 経由で Postgres に接続すると、ユーザーはGo アプリケーションからの接続確立の拒否に遭遇しました。この記事では、この問題について詳しく掘り下げ、解決策を示します。

この問題は、Go アプリケーションによって生成されたデータベース URL がデータベースのホスト名を「postgres」として参照しているのに、実際のコンテナ/サービス名が「database」である場合に発生します。これを解決するには、compose.yaml ファイル内の名前を変更するか、ホスト名フィールドを明示的に定義することを検討してください。例:

database:
  build: database
  restart: always
  hostname: postgres

または、複数のコンテナ サービスが相互に通信するための専用ネットワークを作成し、接続の問題を防ぎます。各サービスの構成に「ネットワーク」セクションを追加し、compose.yaml の最後にネットワークを定義します:

database:
  # ...
  networks:
    - mynet

backend:
  # ...
  networks:
    - mynet

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

これらの変更を実装することで、Go アプリケーションと Postgres の間の接続を確立できます。 Docker-compose 環境内で効率的な通信を確保します。

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

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