Decentralized ethereum application development with docker
29 october, 2018
A few months ago I have started experiments with ethereum private networks. The first task was to setup network on virtual machine. I have started with Fedora 20 (there was a free vm on my server), but after a few days have given up. Installation trace: start, end. I should mention that I have setup Go language and Go-Ethereum suite on FC20 successfully, but failed with Solidity.
At the next step I have installed Debian 9.4 virtual machine and deployed Go language, Go-Ethereum and Solidity there. But when I have tried to repeat install on my Debian 9.4 VPS I’ve got this issue, after a quick research I have fixed the error and the issue has been closed (see link below for details).
You could ask me — why I’m telling you these stories?! The answer is simple — now I’m using docker and have no any troubles.
A few days ago I have created a configuration file for Docker. With this config you can build full functional image for Ethereum development — pre-installed Go language, Go-Ethereum, Solidity and Ethereum private network example.
If you have no enough time to wait while docker image will build (it takes ~ 30 min on vm), you can pull pre-built docker image from my registry (registry.gitlab.com/pheix-pool/docker-ethereum) and start development of your decentralized apps right now. Follow these steps:
1. Pull the image:
2. Create an alias for pulled image:
3. Run this image with bridged network from container to host:
4. Start local private ethereum network within container:
Attach to the Docker container and Ethereum nodes
After these steps you will got working local ethereum private network with 2 nodes. First node is available at http://127.0.0.1:8501, second node is available at: http://127.0.0.1:8502. To connect to these nodes via RPC-JSON from host just threw http-request from your app.
To connect to these nodes via geth attach to the working
Inside container attach to screen with command:
Then create a new window with Ctrl+A C and run:
You will attach to the first node. Create a new window with Ctrl+A C again and run:
You will attach to the second node. To detach screen press Ctrl+A D, to detach container just run
exit in command line.
Local private network example
Local ethereum private network example is based on this manual, and contains twin-node setup with bash script automation. Repository with example is available on gitlab.com. In
dev.local folder there are:
Node folders with private data (keys, passwords);
Accounts data (hashes and passwords);
reinit.sh— bash script for node reinitializion, it clear previous blockchain and initializes nodes with genesis block;
start.node2.sh— bash scripts for node startup;
start-all-in-screen.sh— bash script for node startup in screen, it start all network nodes (bootnode, node1 and node2) in different windows of screen app; you can attach to this screen via
screen -xcommand and browse windows with Ctrl+A N or Ctrl+A P commands.