Once I wanted to run a Bitcoin node inside a docker container. To configure a computer to run a Bitcoin is not an easy task. There are many dependencies you have to install & there are several configurations to setup. I have been going through those troubles few times & decided to move Bitcoin node into a Docker environment. So everything I have to do is build the docker image & run it.
If you want to have a look, the repository is here bitcoin-rb.
To make things easier & clear I am going to use a
version: '2' services: app: build: ./app volumes: - ./app:/app command: -printtoconsole -testnet=1 -rest -rpcallowip=0.0.0.0/0 -rpcpassword=bar -rpcport=18333 -rpcuser=foo -server ports: - 18333:18333
So basically I have a directory called
app & I include my
Dockerfile inside that
app folder and also I am using a volume otherwise the blocks I already synced will be gone once I stop my docker container. And there are several commands you can pass when you start the Bitcoin node.
printtoconsole - Send trace/debug info to console instead of debug.log file
testnet = 1 - Use the test chain instead of main network
rest - Accept public REST requests (default: 0)
rpcallowip - Allow JSON-RPC connections from specified source. Valid for
rpcpassword - Password for JSON-RPC connections
rpcport - Listen for JSON-RPC connections on
rpcuser - Username for JSON-RPC connections
server - Accept command line and JSON-RPC commands
Here is the full list of commands you can use - Commands
This is the Dockerfile with everything installed
FROM ubuntu:16.04 # Install bitcoind from PPA RUN apt-get update RUN apt-get install --yes software-properties-common RUN add-apt-repository --yes ppa:bitcoin/bitcoin RUN apt-get update # install bitcoind (from PPA) and make RUN apt-get install --yes bitcoind # copy bitcoin.conf ADD . /home/bitcoind-testnet # WORKDIR sets the working directory for any RUN, CMD, ENTRYPOINT, COPY and ADD instructions that follow WORKDIR /home/bitcoind-testnet ENTRYPOINT ["bitcoind"]
This Dockerfile is installing
bitcoind on a ubuntu image & will make the directory to run the node.
After you create the
docker-compose.yml file & Dockerfile inside
/app directory, you are good to run the Bitcoin node. In the root directory run,
docker-compose build docker-compose -f docker-compose.yml up
That’s it. You will see the Bitcoin node is starting up & start syncing the blocks.
But you will face not enough space inside docker VM if you run Bitcoin live node inside a docker container. Because Bitcoin live is more than 200GB. But you can easily use this way to run Bitcoin testnet for testing purposes.