まえがき
ethereumの開発環境をdockerで共有したい。
dockerには不慣れなのでひとまずDockerFileやDockerComposeのことは考えずに、コンテナ作成〜起動確認までをやってみる。
環境
- macOS High Sierra 10.13.4
- Docker for mac 18.03.1-ce-mac65
Docker for macはインストール済みとします。
イメージの取得
gethのイメージをpullします。
docker pull ethereum/client-go #tagをつけないとlatest版を取得する
- tag一覧はこちら
コンテナの作成
取得したイメージからコンテナを作成します。
今回はethereumテストネットのropstenのノードを立てます。
docker run -d --name ethereum-ropsten-node -v $HOME/geth/ropsten:/root \
-p 8545:8545 -p 30303:30303 \
ethereum/client-go \
--networkid "3" \
--cache=1024 \
--syncmode "fast" \ // 2018/09/25修正 --fastから左記へ変更
--rpc \
--rpcapi "db,eth,net,web3,personal,admin,miner" \
--rpccorsdomain="*" \
--rpcaddr "127.0.0.1"
コマンド説明
-
-d
- デーモンで起動
-
--name ethereum-ropsten-node
- コンテナ名を「ethereum-ropsten-node」とする
-
-v $HOME/geth/ropsten:/root
- ボリュームのマウント先を指定
-
$HOME/geth/ropsten
は、ホストのフォルダ -
/root
は、コンテナ内のフォルダ
-
- ボリュームのマウント先を指定
-
-p 8545:8545
- ポートの指定
-
-p 30303:30303
- 同じくポートの指定
-
ethereum/client-go
以降は、gethの起動オプション- gethの起動オプションの詳細はこちら
起動確認
コンテナに入り、shを起動します。
docker exec -it ethereum-ropsten-node /bin/sh
今回はgethの起動時オプションに、rpcのオプションを付けていたのでRPC接続します。
geth attach http://127.0.0.1:8545
gethのjavascriptコンソールが立ち上がるので、ChainDataの同期を確認します。
追記: 2018/09/25
同期確認は少し時間を立ってから実行してください。(5分くらい?)
同期開始前の場合、 false
と表示されます。
追記ここまで
> eth.syncing
{
currentBlock: 17984,
highestBlock: 5834590,
knownStates: 35989,
pulledStates: 33439,
startingBlock: 0
}
無事、ChainDataの同期が始まってました。
あとがき
今回は単純にgethのノードのみを起動しましたが、機会があればdocker-compose + node + truffleとかの方法も書いてみたいと思います。
以上。