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