Docker
This directory contains the Dockerfiles used to build and release the official images and a docker-compose.yml
file that is intended for end users to run a Mempool instance with minimal effort.
bitcoind only configuration
To run an instance with the default settings, use the following command:
$ docker-compose up
The default configuration will allow you to run Mempool using bitcoind
as the backend, so address lookups will be disabled. It assumes you have added RPC credentials for the mempool
user with a mempool
password in your bitcoin.conf
file:
rpcuser=mempool
rpcpassword=mempool
If you want to use your current credentials, update them in the docker-compose.yml
file:
api:
environment:
MEMPOOL_BACKEND: "none"
RPC_HOST: "172.27.0.1"
RPC_PORT: "8332"
RPC_USER: "mempool"
RPC_PASS: "mempool"
Note: the IP in the example above refers to Docker's default gateway IP address so the container can hit the bitcoind
instance running on the host machine. If your setup is different, update it accordingly.
You can check if the instance is running by visiting http://localhost - the graphs will be populated as new transactions are detected.
bitcoind+romanz/electrs configuration
In order to run with romanz/electrs
as the backend , in addition to the settings required for bitcoind
above, you will need to make the following changes to the docker-compose.yml
file:
- Under the
api
service, change the value ofMEMPOOL_BACKEND
key fromnone
toelectrum
:
api:
environment:
MEMPOOL_BACKEND: "none"
- Under the
api
service, set theELECTRUM_HOST
andELECTRUM_PORT
keys to your Docker host ip address and setELECTRUM_TLS_ENABLED
tofalse
:
api:
environment:
ELECTRUM_HOST: "172.27.0.1"
ELECTRUM_PORT: "50002"
ELECTRUM_TLS: "false"
You can update any of the settings in the mempool-config.json
file using the environment variables to override. Refer to the start.sh
script for a list of variables and their default values.
Troubleshooting
If you already have something running on port 80, change it to something else under the web
service section.
If you get stuck on "loading blocks", this means the websocket can't connect.
If you can't connect to the bitcoind
RPC server, check your firewall settings and your bitcoin.conf
file, it should contain at least these settings:
rpcallowip=0.0.0.0/0
rpcuser=mempool
rpcpassword=mempool
bind=0.0.0.0:8333
rpcbind=0.0.0.0:8332
If you can't connect to electrum/electrs, check your firewall settings and the IP you entered.
If you see a permission denied error coming from the database container, check your filesystem. The cache files generated by the backend will be stored in the ./data
directory and the database will be stored in the ./mysql/data
directory relative to the location of the docker-compose.yml
file. If you move it somewhere, the paths will have to be updated and/or recreated.