LoginSignup
0

More than 5 years have passed since last update.

とにかく新しいソースでCatapultをcatapult-service-bootstrapで動かす

Last updated at Posted at 2019-01-26

次期nemネットワークを担う、絶賛開発中のcatapultはオープンソースなので動作の保証はともかく、
gitリポジトリから最新のコードを手に入れて動かしてみることはできます。

しかし、実際に動作確認をするには結構手間です。
(ノードにそれぞれ役割があるので、1つのネットワークを自分で立てるには諸々手間がかかるという意味です)

そんなcatapultネットワークをdocker-compose upで立ち上げ、
数分後にはアクセスできるようにしてくれるのが、tech-bureau/catapult-service-bootstrap です。

しかし、このセットアップはある程度安定したバージョンがリリースされないとdockerイメージを更新したものがリリースされません。

今現在リリースされているのはコードネームBison版ですが、続いてCow版、Dragon版、E<禁則事項>版、
そして<禁則事項>版がそれぞれの段階でリリースされてからの公開になるでしょう。

この記事は、セットアップが簡単なcatapult-service-bootstrapを利用しつつ、最新のソースでネットワークを動かす試みです。

大まかな方針

単純ですが、docker-compose.ymlで指定されているイメージを、
自前でビルドしたものと置き換えて、実行します。
とはいえ、いくつかのアプリケーションが組み合わさって動くものなので、
組み合わせによってはまともに動かないかもしれません。
無駄に興味がある人向けです。

catapult-server

luxtagofficial/catapult-server: Dockerfiles to build catapult

LUXTAG公式にCatapultサーバのDockerイメージ化リポジトリがありました。
超便利なのでこれで行きましょう。

catapult-rest

catapult-rest の Dockerfile を書きました。
catapult-service-bootstrap で使われているイメージと中身はちょっと違うかもしれませんが、
同じように動作するようにセットアップしてます。

44uk/catapult-rest at dockerfile

もしかしたらこのブランチが最新のソースに追いついていないということがあるかもしれないので、
その場合はDockerfileをパクるなりしてください。

catapult-block-explorer

エクスプローラのソースも公開されたっぽいので、これを使います。
Dockerfileがあるのでビルドします。

AnthonyLaw/catapult-block-explorer: Catapult Blockchain Explorer

イメージをビルド

もうここから先はDockerの話になりますが、それぞれのイメージをビルドします。
タグ名はmy-*にしましたが、これは各々お好みでどうぞ。

luxtagofficial/catapult-server

このビルドは結構時間がかかります。
マシンスペックにもよりますが、大体2時間くらいでしょうか。

$ cd server
$ docker build -t my-catapult-server .

ちなみにこの行でcloneしてくるブランチを指定していたので、任意のコミットのcatapult-serverが欲しかったら書き換えるとよさそうです。

44uk/catapult-rest

$ docker build -t my-catapult-rest-server .

* 追記
luxtagofficial/catapult-server にも catapult-rest が含まれていました。
こちらをつかってみてもいいかもしれません。

AnthonyLaw/catapult-block-explorer

$ docker build -t my-catapult-block-explorer .

指定イメージの書き換え

イメージがビルドできたら、catapult-service-bootstrapdocker-compose.ymlで指定しているイメージを置き換えていきましょう。

dockerfile.yml

rest-gateway:
  # image: techbureau/catapult-rest-server:1.0.8
  image: my-catapult-rest-server

block-explorer:
  # image: techbureau/catapult-block-explorer
  image: my-catapult-block-explorer

こちらはDockerfileで指定されているファイルを直接変更してください。

# FROM  techbureau/catapult-server:gcc-0.2.0.2
FROM my-catapult-server
# FROM  techbureau/catapult-tools:gcc-0.2.0.2
FROM my-catapult-server

bootstrapを起動

イメージとコンテナを再作成させつつ立ち上げます。

$ docker-compose up --build --force-recreate

もしかするとバージョンによってはブロックへの仕様変更で動作しなくなるかもしれないので、
起動する前に ./clean-data を実行してチェーンを削除したほうが良いと思います。
(./clean/all は生成した設定やnemesis等も削除します。こっちを実行しないとダメなケースがあるかもしれません)

設定ファイルの修正

設定テンプレートの修正が必要になる場合があるかもしれません。

ruby/catapult-templates以下に起動時に生成されるファイルの元になるものがあるので、
必要に応じて修正します。
(何をどう修正すればいいかは、catapultやrest-serverの変更を見ないとわかりませんが…)

たとえば、執筆時点では、どうやらcatapult-restnamespaceプラグインがnamespacemosaicプラグインに分離されたようなので、
catapult-service-bootstrap/ruby/catapult-templates/rest_gateway/rest.json.mt
mosaicプラグインの読み込みを書き加えてあげないといけない、なんてことがありました。

この方法で一応ブロックが生成されていくところまでは確認しました。
が、細かいところまでは確認していないので、動作不良があるかもしれません。
(上記の方法はなにか問題があるようであれば加筆修正していきます)

とりあえず今やってみたところ、見事に仕様が変わっててcatapult-restがエラーを起こして、
レスポンスが得られなかったりしました…。

なんにせよserverrestで機能の実装・公開のタイミングが揃ってなかったりするので、正式リリースを待つほうが懸命です。

エクスプローラなんかは割と新しめでも動くので差し替えてみると面白いかもしれません。

今回はすべてをmasterブランチでビルドしていますが、
Dockerfileだけ利用すれば特定のソースを取得してビルドするということもできますね。

catapult-service-bootstrapは便利ですが、イメージの更新が遅いので
(安定版のイメージでリリースされるっぽい)、
軽微なバグが取りこまれたサーバで動かしたい場合には良いかと思います。

特にcatapult-restの方はブロック情報の取得やトランザクションの送信で
直接やり取りをするサーバなので新しいものに差し替えてみると、
早そうで早くない少し早い実装に触れられるかもしれません。

ぶっちゃけ、手探りせざる負えないのでおとなしく正式リリース待ったほうが良さそうですけどね。

「そんなもんじゃ、憧れは止められねえんだ!」

なんてね。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0