使用Docker容器构建Bitcoin

虽然说Bitcoin Core有编译好的客户端。但如果能自己编译下源码,感觉也还是不错的。所以就有了以下的图文:

前置条件

  • 已经安装好Docker
  • 能够科学上网

构建Bitcoin客户端

从源码构建bitcoin客户端,我们分为以下几步:

  • 选择一个Linux,并安装系统依赖库
  • 从github下载代码库,并切换最新的版本
  • 运行autogen.sh脚本
  • 运行configure脚本
  • 运行make和make install
  • 验证bitcoin安装成功

所以,我们的Dockerfile如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# 基于alpine linux构建
FROM alpine
# 安装安装系统依赖库
RUN apk update && apk add git \
make \
file \
autoconf \
automake \
build-base \
libtool \
db-c++ \
db-dev \
boost-system \
boost-program_options \
boost-filesystem \
boost-dev \
libressl-dev \
libevent-dev
# 下载源码,并切换到最新的分支
RUN git clone https://github.com/bitcoin/bitcoin --branch v0.17.0.1 --single-branch
# 运行autogen.sh脚本 以及 运行configure脚本 以及 运行make和make install
RUN (cd bitcoin && ./autogen.sh && \
./configure --disable-tests \
--disable-bench --disable-static \
--without-gui --disable-zmq \
--with-incompatible-bdb \
CFLAGS='-w' CXXFLAGS='-w' && \
make -j 4 && \
strip src/bitcoind && \
strip src/bitcoin-cli && \
strip src/bitcoin-tx && \
make install )

运行
docker build -f bitcoin.dockerfile -t bitcoin-alpine .构建一个docker镜像。

在成功构建镜像后,通过命令运行镜像docker run -it bitcoin-alpine-bin

bitcoind 默认的安装位置是/usr/local/bin。你可以通过询问系统下面2个可执行文件的路径,来确认bitcoin是否安装成功。

1
2
3
4
5
/ # which bitcoind
/usr/local/bin/bitcoind
/ # which bitcoin-cli
/usr/local/bin/bitcoin-cli

然后,在运行的容器中运行bitcoin的后台程序:

bitcoind -server=1 -rest=1 -regtest -txindex=1 -daemon

通过运行bitcoin-cli -regtest getblockchaininfobitcoin-cli -regtest getnetworkinfobitcoin-cli -regtest getwalletinfo可以获得到相关的状态信息。

其中:

1
2
3
- getblockchaininfo: blocks, difficulty, chain
- getnetworkinfo: version, protocolversion, timeoffset, connections, proxy, relayfee, warnings
- getwalletinfo: balance, keypoololdest, keypoolsize, paytxfee, unlocked_until, walletversion

参考: