1
+ FROM debian:bookworm-slim as builder
2
+
3
+ ARG BITCOIN_VERSION=${BITCOIN_VERSION:-28.1}
4
+
5
+ ARG TARGETPLATFORM
6
+
7
+ RUN apt-get update && \
8
+ apt-get install -qq --no-install-recommends ca-certificates dirmngr gosu wget libc6 procps python3
9
+ WORKDIR /tmp
10
+ # install bitcoin binaries
11
+ RUN case $TARGETPLATFORM in \
12
+ linux/amd64) \
13
+ echo "amd64" && export TRIPLET="x86_64-linux-gnu" ;; \
14
+ linux/arm64) \
15
+ echo "arm64" && export TRIPLET="aarch64-linux-gnu" ;; \
16
+ esac && \
17
+ BITCOIN_URL="https://bitcoincore.org/bin/bitcoin-core-${BITCOIN_VERSION}/bitcoin-${BITCOIN_VERSION}-${TRIPLET}.tar.gz" && \
18
+ BITCOIN_FILE="bitcoin-${BITCOIN_VERSION}-${TRIPLET}.tar.gz" && \
19
+ wget -qO "${BITCOIN_FILE}" "${BITCOIN_URL}" && \
20
+ mkdir -p bin && \
21
+ tar -xzvf "${BITCOIN_FILE}" -C /tmp/bin --strip-components=2 "bitcoin-${BITCOIN_VERSION}/bin/bitcoin-cli" "bitcoin-${BITCOIN_VERSION}/bin/bitcoind" "bitcoin-${BITCOIN_VERSION}/bin/bitcoin-wallet" "bitcoin-${BITCOIN_VERSION}/bin/bitcoin-util"
22
+
23
+ # Download zipped sourced code for the tag and extract miner.py
24
+
25
+ # FROM debian:buster-slim as custom-signet-bitcoin
26
+ FROM debian:bookworm-slim as custom-signet-bitcoin
27
+
28
+
29
+ LABEL org.opencontainers.image.authors="Alpenlabs"
30
+ LABEL org.opencontainers.image.licenses=MIT
31
+ LABEL org.opencontainers.image.source="https://github.com/alpenlabs/bitcoin_signet"
32
+
33
+ ENV BITCOIN_DIR /root/.bitcoin
34
+
35
+
36
+ ENV RPCUSER=${RPCUSER:-"bitcoin" }
37
+ ENV RPCPASSWORD=${RPCPASSWORD:-"bitcoin" }
38
+ ENV COOKIEFILE=${COOKIEFILE:-"false" }
39
+ ENV ONIONPROXY=${ONIONPROXY:-"" }
40
+ ENV TORPASSWORD=${TORPASSWORD:-"" }
41
+ ENV TORCONTROL=${TORCONTROL:-"" }
42
+ ENV I2PSAM=${I2PSAM:-"" }
43
+
44
+ ENV UACOMMENT=${UACOMMENT:-"CustomSignet" }
45
+ ENV ZMQPUBRAWBLOCK=${ZMQPUBRAWBLOCK:-"tcp://0.0.0.0:28332" }
46
+ ENV ZMQPUBRAWTX=${ZMQPUBRAWTX:-"tcp://0.0.0.0:28333" }
47
+ ENV ZMQPUBHASHBLOCK=${ZMQPUBHASHBLOCK:-"tcp://0.0.0.0:28334" }
48
+
49
+ ENV RPCTHREADS=${RPCTHREADS:-"16" }
50
+ ENV RPCSERVERTIMEOUT=${RPCSERVERTIMEOUT:-"600" }
51
+ ENV RPCWORKQUEUE=${RPCWORKQUEUE:-"50" }
52
+
53
+
54
+ ENV RPCBIND=${RPCBIND:-"0.0.0.0:38332" }
55
+ ENV RPCALLOWIP=${RPCALLOWIP:-"0.0.0.0/0" }
56
+ ENV WHITELIST=${WHITELIST:-"0.0.0.0/0" }
57
+ ENV ADDNODE=${ADDNODE:-"" }
58
+ ENV BLOCKPRODUCTIONDELAY=${BLOCKPRODUCTIONDELAY:-"30" }
59
+ ENV MINERENABLED=${MINERENABLED:-"1" }
60
+ ENV MINETO=${MINETO:-"" }
61
+ ENV EXTERNAL_IP=${EXTERNAL_IP:-"" }
62
+
63
+ # Variable used to generate wallets used by bridge operators
64
+ # TODO: update this logic to match Testnet I requirement
65
+ ENV NUM_WALLETS=${NUM_WALLETS:-0}
66
+ VOLUME $BITCOIN_DIR
67
+ EXPOSE 28332 28333 28334 38332 38333 38334
68
+ RUN apt-get update && \
69
+ apt-get install -qq --no-install-recommends procps python3 python3-pip jq && \
70
+ apt-get clean
71
+ COPY --from=builder "/tmp/bin" /usr/local/bin
72
+ COPY *.sh /usr/local/bin/
73
+
74
+ # TODO: figure out these imports for the miner script
75
+ COPY miner_imports /usr/local/bin
76
+ # FIXME: the miner script should be used from the tar file of the downloaded source code
77
+ COPY miner /usr/local/bin/miner
78
+ COPY rpcauth.py /usr/local/bin/rpcauth.py
79
+ # RUN pip3 install setuptools
80
+ RUN pip3 install --break-system-packages setuptools
81
+
82
+ ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh" ]
83
+
84
+ CMD ["run.sh" ]
0 commit comments