LoginSignup
0
1

More than 1 year has passed since last update.

Docker上にGanache環境を構築する

Posted at

はじめに

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

image.png

DOWNLOADボタンを押下。

image.png

SaveFileを選択。

image.png

フォルダアイコン押下で、エクスプローラでダウンロード先を表示。

image.png

デフォルトでDownloadsフォルダへ格納されるため、.AppImageファイルを任意の作業用フォルダへ移動。
※私は/root/workフォルダへ移動しました。

image.png

3.Ganacheの起動

image.png

Ganacheの公式手順だとダウンロード後にダブルクリックで実行できるようなのですが、出来ませんでした。
なので、ターミナルから実行していきます。

image.png

.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

image.png

少し待つとウインドウが表示されます!
ちなみにこの画面はGoogle Analyticsの追跡を許可するか否かの選択画面です。(Ganache公式手順にも説明あり)
内容を読んで、任意の設定でCONTINUEを押下しましょう。
※この追跡は匿名で、アカウントデータ・秘密鍵の共有などが行われることはないそうです。

image.png

CONTINUE押下後、上記画面が表示されます。
今回は特に設定もせず、さくっと立ち上げてみましょう。
QUICKSTARTを押下します。

image.png

上記画面が表示され、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

以上ですー。

0
1
0

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
1