6月28日、29日に開催されたG20でも議論されたと言われる話題のLibra、登場早々さまざまな方面に影響を与えています。そんなLibraを手軽に体感できるように、最短で2文で実行できるDockerイメージを作ったので紹介します!
#前提知識と下準備
前提としてお使いのPCにDockerがインストールされている必要があります。Dockerはコンテナ技術を使った仮想環境を構築でき、スクラップ&ビルドがしやすいため、今回のような実験的なプログラムを動かしやすいメリットがあります。また、Dockerイメージと呼ばれるファイルシステムを利用することで同じ環境を構築することができるため配布がしやすいという長所もあります。
DockerイメージはDockerfileと呼ばれるファイルによって定義されます。
#Dockerイメージの紹介
今回作成したDockerイメージは以下のようなDockerfileで定義されています。こちらのファイルはGitHubでも確認できるようにしています。
https://github.com/Naokiakazawa/libratest-docker
FROM ubuntu:19.04
SHELL ["/bin/bash", "-c"]
RUN apt-get update \
&& apt-get -y upgrade \
&& apt-get -y install \
cmake \
curl \
git \
golang \
libssl-dev \
protobuf-compiler \
sudo \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* \
&& git clone https://github.com/libra/libra.git
WORKDIR /libra
RUN yes | ./scripts/dev_setup.sh \
&& source /root/.cargo/env \
&& cargo build
CMD [ "./scripts/cli/start_cli_testnet.sh" ]
#使い方
今回作成したDockerイメージは、DockerHub上で公開しています。
https://hub.docker.com/r/naokiakazawa/libra-test
DockerHubはさまざまなDockerイメージが公開されているプラットフォームで、ログインすれば便利なイメージを利用することができます。Dockerのインストールやログインなどが問題なければ、この節にある2つのコマンドでテストネットを立ち上げることができます。
まず、DockerHubのDockerイメージをローカル環境にプルしましょう。まず1つ目のコマンドはdocker pull
を使って以下のようになります。
docker pull naokiakazawa/libra-test
プルできたら次にdocker run
を使って、以下のコマンドでイメージからコンテナを立ち上げます。これが2つ目のコマンドになります。
docker run --name libratestnet -it naokiakazawa/libra-test
なお、--name libratestnet
では立ち上げるコンテナの名前をlibratestnetとすることを定義しています。また、この時、docker run
の末尾に/bin/bash
などのようなコマンドをつけないようにしてください。Dockerfileの最後にあるCMD命令の内容が上書きされるため、正しく動作しません。
うまく起動すればLibraコマンドが実行できるようになります。libra#
というプロンプトが出れば問題ありません。
ただし、2点注意があります
- Dockerイメージのデータサイズが約15GBほどあります。テストネットの環境を丸ごとコンテナの中に展開しているのでデータが少々大きくなります。
- データサイズが大きいため、イメージをプルする時間が少しかかります。
#まとめ
この度は、PCのローカル環境を汚すことなく、手軽に試せるようにするためDockerイメージを作ってDockerHubで公開しました。
ただ少しデータサイズが大きくなってしまうため、今後小さくしてみたいと思います。(たぶんベースイメージを小さいものにしたり、マルチステージビルドをしてみたりするとうまくいくはず…)