ホームページ  >  記事  >  バックエンド開発  >  docker-compose を使用して CockroachDB に接続するにはどうすればよいですか?

docker-compose を使用して CockroachDB に接続するにはどうすればよいですか?

王林
王林転載
2024-02-15 12:03:091039ブラウズ

如何使用 docker-compose 连接到 CockroachDB?

phpエディタStrawberryがdocker-composeを使ってCockroachDBに接続する方法を紹介します。 Docker-compose は複数の Docker コンテナを定義して実行するためのツールであり、CockroachDB は分散リレーショナル データベース管理システムです。 docker-compose を使用すると、CockroachDB コンテナーを簡単に作成および管理し、他のコンテナーに接続できます。この記事では、CockroachDB に接続するように docker-compose ファイルを構成する方法を詳しく説明し、いくつかの実用的なヒントと考慮事項を提供します。初心者でも経験豊富な開発者でも、この記事は、docker-compose を使用して CockroachDB に接続することをすぐに始めるのに役立つ役立つガイダンスを提供します。

質問の内容

データベースをデプロイしてアプリケーションをローカルに移動する docker-compose ファイルがあります。 リーリー

ファイルに移動:

リーリー

データベースへの接続が確立されました。しかし、接続は失敗し、間違ったポートが転送されました。26257 ではなく、26258 でした。この問題をどうやって解決すればいいでしょうか? ######解決######

リンク

は使用しないでください。この機能は何年も前から廃止されており、下位互換性のためだけに残されています。 Docker はコンテナーの DNS を維持するため、接続を確立するときにサービス名をホスト名として使用するだけで済みます。
  1. network_mode: host

    ではポート転送を使用できません。
  2. depends_on

    の使用は事実上何も行われません。データベースが接続を処理できるようになる前に、アプリケーションがデータベースに接続しようとしている可能性があります。
  3. 実際、データベース クラスターは

    cockroach init を実行するまで接続を受け付けないため、間違いなく

    この問題が発生します。

    構成ファイルは次のエラーで node_1

    の起動に失敗します:
  4. リーリー
  5. あなたの node_1

    ポート転送が正しくありません。コンテナー内の何もポート 8081 をリッスンしていません。次のようなものが必要になるかもしれません:
  6. リーリー
  7. 最後に、サンプル コードの storage

    モジュールの出所が示されていないため、テストには使用できません。私が作成したテスト プログラムには、データベースが接続を受け入れるのを待機するループが含まれています。 リーリー
上記の問題をすべて解決し、構成ファイルをクリーンアップすると、最終的には次のようになります:

リーリー この構成では、アプリケーションがデータベースにアクセスするために必要ないため、意図的にホスト上のデータベース ポートを公開していないことに注意してください。

この構成を docker で記述すると、データベース サービスから次のことがわかります:

リーリー サンプル アプリケーションの

および次の内容 (想定):

リーリー

データベースを初期化する必要があります:

リーリー その後、データベース サービスから次のことがわかります: リーリー

サンプル アプリケーションは接続してクエリを実行できます:

リーリー

これらのノードの Web UI は、ホスト ポート

8080

および

8081

で公開されます。

最後に、データベース データを保持するボリュームを作成することもできます。たとえば、このドキュメントボリュームのマウントを参照してください。

以上がdocker-compose を使用して CockroachDB に接続するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。