はじめに
Docker上にGanacheをインストールして、GUIでTXの確認を出来るようにする。
下記手順でひとまずDockerのUbuntu上にGanache環境を構築できますが、ちょっと使いづらいかなという部分があります。(末尾に記載)
こちらに関しては筆者のLinuxの知識が浅い面もあり、進展あり次第追記していきたいと思います。
バージョン
執筆時点(2021/08/29)での筆者の環境です。
・Docker: 20.10.8
・Ubuntu: 20.04
・Ganache: 2.5.4
手順
1.Docker上にUbuntuのデスクトップ環境を構築する
2.Ganacheのダウンロード
3.Ganacheの起動
1.Docker上にUbuntuのデスクトップ環境を構築する
下記Qiitaの記事を参考に進めて無事リモートデスクトップ環境の構築と、
ローカルからのアクセスが出来ました。
参考:Dockerに構築したLinuxにリモートデスクトップで接続する
※こうやってまとめてくださっていると、普段触らない技術と相対する時に
本当に助かります。ありがとうございます。
今回は上記参考記事からポートフォワードの指定を追加しています。
Ganacheへアクセスするポート番号がデフォルトで7545のため、
ポートフォーワードで外部からコンテナの7545にアクセスできるように指定します。
docker run -name コンテナ名 -p 13389:3389 -p 7545:7545 -it イメージ名 /bin/bash
※7545以外のポートでアクセスしたい場合は-p 7545:7545
部分を適宜変更してください。
2.Ganacheのダウンロード
リモートデスクトップ接続
コンテナ作成/起動後、ローカル環境からリモートデスクトップでアクセスします。
上記参考手順に従って、リモートデスクトップへアクセスします。
Ganacheのダウンロード
リモートデスクトップで接続したUbuntu上のブラウザより
Ganacheのサイトへアクセス。
https://www.trufflesuite.com/ganache
DOWNLOADボタンを押下。
SaveFileを選択。
フォルダアイコン押下で、エクスプローラでダウンロード先を表示。
デフォルトでDownloadsフォルダへ格納されるため、.AppImageファイルを任意の作業用フォルダへ移動。
※私は/root/work
フォルダへ移動しました。
3.Ganacheの起動
Ganacheの公式手順だとダウンロード後にダブルクリックで実行できるようなのですが、出来ませんでした。
なので、ターミナルから実行していきます。
.appimageファイルのコピー先まで移動して、
下記コマンドを実行して権限を付与します。
# cd コピー先のフォルダパス
# chmod a+x ganache-2.5.4-linux-X86_64.AppImage
権限が付与されたので、下記コマンドを叩いてGanacheを起動させます。
./ganache-2.5.4-linux-X86_64.AppImage --appimage-extract-and-run
少し待つとウインドウが表示されます!
ちなみにこの画面はGoogle Analyticsの追跡を許可するか否かの選択画面です。(Ganache公式手順にも説明あり)
内容を読んで、任意の設定でCONTINUE
を押下しましょう。
※この追跡は匿名で、アカウントデータ・秘密鍵の共有などが行われることはないそうです。
CONTINUE
押下後、上記画面が表示されます。
今回は特に設定もせず、さくっと立ち上げてみましょう。
QUICKSTART
を押下します。
上記画面が表示され、Ganacheの起動は完了です!
QUICKSTART
を選択した場合はデフォルトでランダムな10個のアドレスが生成され、それぞれ100ETH保持した状態で起動します。
この状態でプライベートチェーンのEthereum環境が利用できるようになっています。
ただ、注意点として、
QUICKSTART
で起動した場合、Ganacheを終了すると今までの取引履歴が削除されてしまいます。
アドレスも再びランダムなものが10個生成されるため、終了前と同じ環境を利用することができないため、
長期間の作業、運用はできません。
以前の環境を保持しておくためにはQUICKSTART
ではなく、WORKSPACE
を作成して進めていく必要がありますが、
それはまたTruffleと連携させる際に記載したいと思います。
おわりに
前述した通り、ひとまずGanacheを動かすところまでは完了。
アプリ実行(ダブルクリック)で躓きましたが、起動してからの操作は比較的簡単そうです。
積み残しとして、以下は今後の課題です。
・コンテナ起動直後はリモートデスクトップで接続できない
コンテナ起動直後はxrdpがうまく起動できていない?せいか、リモートデスクトップにアクセスできません。
現状、コンテナ起動後に一度ターミナルで入り、下記コマンドを実行することで、リモートデスクトップでのアクセスが可能になります。
/etc/init.d/xrdp stop
/etc/init.d/xrdp start
ただ、毎度ターミナルに入って、、、というのは面倒くさい。
コンテナ起動時に任意のスクリプトを実行できるはずなので、要調査。
・リモートデスクトップアクセス時pidエラーのダイアログが表示される
色々調べてみたところWSL環境ではDockerのコンテナにログインしたユーザーへのpidの紐づけ?が
うまくできないようです。
筆者はそもそもpidって?くらいの知識なので、この辺りは要勉強です。汗
※genieなるものをインストールすればpid=1も利用できるようになるという記事も観ましたが、
うまくいきませんでした。
genie -s
を実行すると下記エラーが発生してしまった。
genie: initializing bottle failed; bind mounting hostname
・Ganacheをアイコンダブルクリックで実行できない
本来.AppImageファイルはダブルクリックで実行可能なようですが、
私の環境ではうんともすんとも言いませんでした。
権限周りが怪しいので調べてみたのですが、解決には至りませんでした。
そのため、ひとまず--appimage-extract-and-run
オプションを付けて、実行出来るようにしています。
参考
・LinuxでAppImage形式のアプリを使う方法と注意点のまとめ
https://www.virment.com/how-to-use-appimage-linux/
・第22回 WSL2の新機能を試してみよう
https://www.school.ctc-g.co.jp/columns/miyazaki/miyazaki22.html
以上ですー。