Deploying a private Geth network using Docker

So you’ve started developing an Ethereum project and
TestRPC
has worked wonderfully. Now you're ready to set up a CI/CD pipeline as you onboard more team members or get ready for your first public network deployment. Or maybe you want to start testing some more advanced features that aren't available without a full-fledged test network. This post will walk you through the initial steps required to deploy a private blockchain development environment using Docker.
There are a few options for running your own Ethereum test network for local development. This tutorial uses Geth, but it’s not the only option. Geth is our preferred Ethereum implementation. It’s the most widely-used client and is well supported.
The goal here is to be able to test your applications locally without the use of the public Ethereum network. Transactions on the public network include a monetary cost, and the public test network can cause proprietary business logic to leak due to bugs. So the more you can do in your own environment to validate your smart contracts and DApps before deploying to a public network, the better. Also, the closer you can get to a public network, the less likely you’ll run into issues later. It’s important to note that while this tutorial focuses on deploying a private network, it does not adequately implement the best practices required for a production-level private network. With that in mind, this tutorial should be used for development only.
If this is your first experience with smart contracts and Ethereum in general, we highly recommend reading the Ethereum
White Paper
for an overview (and the
Yellow Paper
for extra credit). We also suggest doing a few smart contract
tutorials
offered by the Ethereum Foundation before proceeding.
To begin, there are some prerequisites that must be installed.
- Git
- Node.js
- Truffle Framework
- Docker