Przygotowanie obrazu oraz stack
Zamiast uruchamiać wirtualną maszynę, możemy uruchomić node BTC jako kontener dokera. Poza aplikacją bitcoind uruchamiamy również exporter danych, abyśmy mogli wizualizować stan synchronizacji w Grafana.
mkdir /external_data/BTC/blocks
FROM debian:11
MAINTAINER Robert Olechowski <robertolechowski@gmail.com>
ARG bitcoind_ver=22.0
RUN apt-get update && apt-get install -y wget
RUN wget https://bitcoin.org/bin/bitcoin-core-$bitcoind_ver/bitcoin-$bitcoind_ver-x86_64-linux-gnu.tar.gz
RUN tar xzf bitcoin-$bitcoind_ver-x86_64-linux-gnu.tar.gz
RUN install -m 0755 -o root -g root -t /usr/local/bin bitcoin-$bitcoind_ver/bin/*
RUN rm -fr /bitcoin-$bitcoind_ver bitcoin-$bitcoind_ver-x86_64-linux-gnu.tar.gz
EXPOSE 8332 8333
CMD ["bitcoind", "-version"]
version: '3.8'
services:
bitcoin:
mem_limit: 4g
stop_grace_period: 2m
stop_signal: SIGINT
container_name: Bitcoin
image: btc_22.0:latest
ports: [8332:8332, 8333:8333]
command: bitcoind -disablewallet -conf=/config/btc/bitcoin.conf
volumes:
- all_config:/config:ro
- /external_data/BTC:/data
security_opt: [no-new-privileges:true]
btc-exporter:
image: 4ops/bitcoin-exporter:stable
container_name: BTC_exporter
restart: unless-stopped
ports: [9133:9133]
build: .
environment:
BITCOIN_RPCHOST: portainer-dell.lan
BITCOIN_RPCUSER: "AAA"
BITCOIN_RPCPASSWORD: "BBB"
BITCOIN_RPCPORT: '8332'
REFRESH_SECONDS: 15
LOG_LEVEL: info
LOG_DEBUG: '*'
volumes:
all_config:
driver: local
name: all_config
Plik konfiguracyjny jest na osobnym wirtualnym dysku
blocksdir=/data/blocks
datadir=/data
dbbatchsize=16777214
dbcache=900
mempoolexpiry=30
txindex=1
assumevalid=0
# [rpc]
server=1
rpccookiefile=/data/cookie
rpcuser=AAA
rpcpassword=BBB
rpcport=8332
rpcthreads=2
rpcclienttimeout=500
rpcbind=0.0.0.0
rpcallowip=192.168.30.0/24
Zbieranie i wyświetlanie logów
Logi są rozdzielone, aby poprawnie formatować logi, jak w górnym oknie korzystamy z wyrażenia
{container_name="BTC_node"}|="UpdateTip:"| logfmt| line_format "H={{.height}} V={{.version}} P={{.progress}} D={{.date}}"
RPC
Zdalne wywoływanie zapytań
bitcoin-cli -rpcconnect=portainer-dell.lan -rpcuser=AAA -rpcpassword=BBB getblockcount