2020/08/31
[ADA]Cardano Walletを起動するDockerfileを作りました
やったこと
Building · input-output-hk/cardano-wallet Wikiを参考にしつつ、最新のソースコードからCardano walletを起動するDocker imageを開発しました。
Motivation
inputoutput/cardano-wallet - Docker Hubも準備されていたのですが、将来的に細かい中身の制御などをしたかったので、
debian
ベースのimageで作ることにしました。
Dockerfile
- cardano-wallet
がinstallされたdocker imageを作成しました。
- https://github.com/input-output-hk/cardano-wallet の最新の
master
branchを元にビルドするようにしています。- (現時点(2020/08/31)では、
v1.19.0
の nodeに対応するものがmaster
branchだからです。) - (特定のrelease versionを指定する必要があれば、tagを指定すればOKです。)
- (現時点(2020/08/31)では、
FROM debian:stretch-slim
# Install dependencies
RUN apt-get update -y
RUN apt-get install -y --no-install-recommends \
libgmp-dev \
libsystemd-dev \
sqlite3 \
git \
curl \
automake \
build-essential \
pkg-config \
libtool \
autoconf
# avoid ssl error when wget https site
RUN apt-get install -y --no-install-recommends ca-certificates
WORKDIR /usr/local/src
# Install Haskell Tool Stack
RUN curl -sSL https://get.haskellstack.org/ | sh
ENV PATH=/root/.local/bin:${PATH}
# Install Libsodium
RUN git clone https://github.com/input-output-hk/libsodium && \
cd libsodium && \
git checkout 66f017f1 && \
./autogen.sh && \
./configure && \
make && \
make install
ENV LD_LIBRARY_PATH=/usr/local/lib
ENV PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
# Download the source code for cardano-wallet and Build and install the wallet
RUN git clone https://github.com/input-output-hk/cardano-wallet.git && \
cd cardano-wallet && \
git fetch --all --tags && \
git checkout master && \
stack build --test --no-run-tests && \
stack install
こちらを元に、起動スクリプトを足して完成になります。
(実際は)Wallet command line interface · input-output-hk/cardano-wallet Wikiを参考にして testnetの場合は、byron genesis fileをパラメータで指定できるようにしたりなどをしています。
- 起動する際は、host上にcardano-nodeのsocketをvolumeで共有させて使用する必要があります。
起動後の確認
Log
正しく起動できると、以下のようなログが出力されます。(wallet機能側で、blockを処理している模様)
[cardano-wallet.pools-engine:Info:19] [2020-08-31 13:34:54.92 UTC] Applying blocks [4459485 ... 4479926]
[cardano-wallet.pools-engine:Info:19] [2020-08-31 13:34:55.05 UTC] Applying blocks [4479929 ... 4500383]
[cardano-wallet.pools-engine:Info:19] [2020-08-31 13:34:55.14 UTC] Applying blocks [4500400 ... 4511657]
[cardano-wallet.pools-engine:Info:19] [2020-08-31 13:34:59.59 UTC] Applying blocks [4511683 ... 4511683]
最終的に以下のようなログが定期的に出力されるようになりました。
[cardano-wallet.network:Info:62] [2020-08-31 13:53:29.87 UTC] Query GetCurrentPParams took 0.00524683s
[cardano-wallet.network:Info:62] [2020-08-31 13:53:29.87 UTC] Query GetUpdateInterfaceState took 0.000900645s
[cardano-wallet.pools-engine:Info:19] [2020-08-31 13:53:36.57 UTC] Applying blocks [4512800 ... 4512800]
[cardano-wallet.network:Info:16] [2020-08-31 13:53:36.58 UTC] Querying the reward account balance for [] at 70617265<-[3e65e7c1-4512800#1741587]
[cardano-wallet.network:Info:62] [2020-08-31 13:53:36.58 UTC] Query GetEraStart took 0.002155571s
[cardano-wallet.network:Info:16] [2020-08-31 13:53:36.58 UTC] Query getAccountBalance took 0.00312281s
[cardano-wallet.network:Info:16] [2020-08-31 13:53:36.58 UTC] delegations = fromList []
rewards = fromList []
[cardano-wallet.network:Info:62] [2020-08-31 13:53:36.58 UTC] Query GetCurrentPParams took 0.002781961s
[cardano-wallet.network:Info:62] [2020-08-31 13:53:36.58 UTC] Query GetUpdateInterfaceState took 0.001913254s
APIの確認
起動しているdocker containerにログインして、以下を実行しました。
# curl -X GET http://localhost:8090/v2/network/information
{"network_tip":{"epoch_number":80,"slot_number":321923},"node_tip":{"height":{"quantity":1741565,"unit":"block"},"epoch_number":80,"slot_number":321914},"sync_progress":{"status":"ready"},"next_epoch":{"epoch_start_time":"2020-09-01T20:20:16Z","epoch_number":81}}
# curl -X GET http://localhost:8090/v2/wallets
[]
問題なく動作していることを確認しました。
以上になります。
関連する記事
tmkmsをdockerでビルドしてローカルのdocker-compose環境で利用してみる
tendermintのkey management systemであるtmkmsをsoftsignモードでテスト環境に導入してみる
[22.0]Local環境でbitcoind@Regtestを動かしてみる
version22.0のbitcoind・Regtestネットワークをdocker-composeを使って動作確認をしました
[ADA]Cardano Submit APIを起動するDockerfileを作りました
Cardano Submit APIのDocker imageを作成しました
[ADA]cardano-serialization-lib from Python その2
Emurgo/cardano-serialization-libをベースにしてpyo3を使ってpythonから利用できるようにしました(transaction編)