Skip to content

Commit 9c4a40b

Browse files
committed
adding dockerfile for cpunet compatible bitcoin-node
1 parent ee8e09c commit 9c4a40b

1 file changed

Lines changed: 108 additions & 0 deletions

File tree

DockerFile

Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
FROM debian:bookworm-slim AS builder
2+
3+
RUN apt-get update && apt-get install -y \
4+
build-essential \
5+
cmake \
6+
pkg-config \
7+
git \
8+
python3 \
9+
libssl-dev \
10+
libevent-dev \
11+
libboost-dev \
12+
libsqlite3-dev \
13+
capnproto \
14+
libcapnp-dev \
15+
&& rm -rf /var/lib/apt/lists/*
16+
17+
WORKDIR /build
18+
19+
RUN git clone \
20+
--branch cpunet \
21+
--depth 1 \
22+
https://github.com/braidpool/bitcoin.git \
23+
.
24+
25+
RUN cmake -B build \
26+
-DCMAKE_BUILD_TYPE=Release \
27+
-DENABLE_IPC=ON \
28+
-DBUILD_CLI=ON \
29+
-DBUILD_TESTS=OFF \
30+
-DBUILD_GUI=OFF \
31+
-DWITH_WALLET=OFF \
32+
-DWITH_BDB=OFF
33+
RUN cd build && make -j$(nproc)
34+
RUN ls -la /build/build/bin/bitcoin-node && \
35+
ldd /build/build/bin/bitcoin-node | grep capnp
36+
RUN ls -la /build/build/bin
37+
RUN ldd /build/build/bin/bitcoin-node
38+
FROM debian:bookworm-slim AS runtime
39+
40+
RUN apt-get update && apt-get install -y \
41+
libevent-2.1-7 \
42+
libboost-filesystem1.81.0 \
43+
libboost-thread1.81.0 \
44+
curl \
45+
&& rm -rf /var/lib/apt/lists/*
46+
47+
RUN groupadd -r bitcoin && \
48+
useradd -r -g bitcoin -d /data -m bitcoin
49+
50+
51+
RUN ls -la
52+
53+
COPY --from=builder /build/build/bin/bitcoin-node /usr/local/bin/bitcoin-node
54+
COPY --from=builder /build/build/bin/bitcoin-cli /usr/local/bin/bitcoin-cli
55+
COPY --from=builder /usr/lib/x86_64-linux-gnu/libcapnp*.so* /usr/lib/x86_64-linux-gnu/
56+
COPY --from=builder /usr/lib/x86_64-linux-gnu/libkj*.so* /usr/lib/x86_64-linux-gnu/
57+
COPY --from=builder /lib/x86_64-linux-gnu/libevent_core-2.1.so.7 /lib/x86_64-linux-gnu/
58+
COPY --from=builder /lib/x86_64-linux-gnu/libevent_extra-2.1.so.7 /lib/x86_64-linux-gnu/
59+
COPY --from=builder /lib/x86_64-linux-gnu/libevent_pthreads-2.1.so.7 /lib/x86_64-linux-gnu/
60+
COPY --from=builder /lib/x86_64-linux-gnu/libcapnp-rpc-0.9.2.so /lib/x86_64-linux-gnu/
61+
COPY --from=builder /lib/x86_64-linux-gnu/libcapnp-0.9.2.so /lib/x86_64-linux-gnu/
62+
COPY --from=builder /lib/x86_64-linux-gnu/libkj-async-0.9.2.so /lib/x86_64-linux-gnu/
63+
COPY --from=builder /lib/x86_64-linux-gnu/libkj-0.9.2.so /lib/x86_64-linux-gnu/
64+
COPY --from=builder /lib/x86_64-linux-gnu/libsqlite3.so.0 /lib/x86_64-linux-gnu/
65+
COPY --from=builder /lib/x86_64-linux-gnu/libstdc++.so.6 /lib/x86_64-linux-gnu/
66+
COPY --from=builder /lib/x86_64-linux-gnu/libgcc_s.so.1 /lib/x86_64-linux-gnu/
67+
68+
RUN ldconfig
69+
70+
RUN mkdir -p /data/.bitcoin/cpunet /tmp/bitcoin-ipc && \
71+
printf '%s\n' \
72+
'[cpunet]' \
73+
'server=1' \
74+
'rpcuser=braidpool' \
75+
'rpcpassword=changeme' \
76+
'rpcbind=0.0.0.0' \
77+
'rpcallowip=0.0.0.0/0' \
78+
'zmqpubsequence=tcp://0.0.0.0:38338' \
79+
'zmqpubhashblock=tcp://0.0.0.0:38332' \
80+
'ipcbind=unix:/tmp/bitcoin-ipc/bitcoin.sock' \
81+
'debug=ipc' \
82+
'printtoconsole=1' \
83+
> /data/.bitcoin/bitcoin.conf
84+
RUN mkdir -p /data/.bitcoin /tmp/bitcoin-ipc && \
85+
chown -R bitcoin:bitcoin /data /tmp/bitcoin-ipc
86+
87+
USER bitcoin
88+
89+
ENV HOME=/data
90+
91+
VOLUME ["/data/.bitcoin", "/tmp/bitcoin-ipc"]
92+
93+
EXPOSE 28333
94+
EXPOSE 28332
95+
EXPOSE 38332
96+
EXPOSE 38338
97+
HEALTHCHECK --interval=15s --timeout=5s --start-period=60s --retries=5 \
98+
CMD bitcoin-cli \
99+
-cpunet \
100+
-datadir=/data/.bitcoin \
101+
-rpcuser=braidpool \
102+
-rpcpassword=changeme \
103+
getblockcount || exit 1
104+
105+
ENTRYPOINT ["bitcoin-node", \
106+
"-cpunet", \
107+
"-debug=ipc", \
108+
"-printtoconsole"]

0 commit comments

Comments
 (0)