DockerComposeを使用したネットワークブートストラップする

Dockerformは、CordaノードをDockerコンテナのローカルに簡単にデプロイすることができます

Dockerformは、CordaノードをDockerコンテナのローカルに簡単にデプロイすることができます。

これは、Cordaのgradleプラグインが提供するタスクで、Network Bootstrapperが生成したアウトプットを使って、ブートストラップされたCordaネットワークを簡単に起動するために使用できるdocker-compose.ymlファイルを自動的に生成します。

Network Bootstrapperの公式ドキュメントはこちらです。

メリット

  • Network Bootstrapper(こちらでも説明しています)構築を簡略化できるdocker-compose.yamlを自動的に作成します。これにより手動での構築が不要になります。
  • Cordaノードとそのデータベースの両方のデプロイメントをより適切に制御できるようになります。
  • Kubernetesでも使用可能な公式Dockerイメージの使用方法を理解することができます。

ウォークスルー事例

ドキュメントには、Dockerformがどのように機能するかが非常によく説明されています。ここでは、R3のGitHubにあるCorDappのサンプルを見てみましょう。

https://github.com/corda/samples-kotlin/tree/master/Features/dockerform-yocordapp .

Dockerformについてのドキュメントはこちら

build.gradleの新しいタスク

  • 外部からSSHでDockerコンテナに接続するために必要な “sshdPort “を追加します
    • ノードに使用する公式Corda Docker Imageを宣言します
    • 外部からSSHでDockerコンテナに接続するために必要な “sshdPort “を追加します
drawing

prepareDockerNodes “タスクを実行する

./gradlew prepareDockerNodesを実行すると、/build/nodesフォルダ内に以下のようなアウトプットが作成されます。

  • docker-compose.yamlは、prepareDockerNodesタスクから取得した情報で自動的に生成されます。
drawing

以下は、docker-compose.yamlの内容です。Dockerのすべてのボリュームが、build/nodes内に生成されたフォルダに関連付けられています。

drawing

外部データベースを追加する

上記の例ではH2データベースを使用していますが、他のデータベースを追加することも可能です。DockerformがDockerコンテナの作成を行います。PostgreSQLを使った例を見てみましょう。

こちらの内容は、こちらのドキュメントにも記載されています。

ドキュメントに記載されている手順が完了したら、./gradlew prepareDockerNodesを実行します。ここでは、出力とdocker-compose.yaml が更新されます。PostgreSQLのパラメータを設定した新しいサービスであるnotary-dbがあります。

drawing

また、Dockerformは上記のDocker Composeで使用されるPostgreSQLのDockerfileと、データベースを初期化するスクリプトも作成します。

drawing drawing