Docker ComposeでCordaのローカルネットワークを最も簡単にブートストラップする方法: Dockerform

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の新しいタスク

  • build.gradleのルートにprepareDockerNodesという新しいタスクを追加します。これは deployNodes タスクとよく似ていますが、以下のプロパティが追加されています。
    • ノードに使用する公式Corda Docker Imageを宣言します
    • 外部からSSHでDockerコンテナに接続するために必要な "sshdPort "を追加します

1.png

 

prepareDockerNodes "タスクを実行する

2.png

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

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

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

3.png

 

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

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

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

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

4.png

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

5.png

6.png

この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています