# Use manifest image which support all architecture FROM debian:bullseye-slim as builder RUN set -ex \ && apt-get update \ && apt-get install -qq --no-install-recommends ca-certificates dirmngr gosu wget RUN apt-get install -qq --no-install-recommends qemu-user-static binfmt-support ENV BITCOIN_VERSION 25.0 ENV BITCOIN_URL https://bitcoincore.org/bin/bitcoin-core-${BITCOIN_VERSION}/bitcoin-${BITCOIN_VERSION}-arm-linux-gnueabihf.tar.gz ENV BITCOIN_SHA256 e537c8630b05e63242d979c3004f851fd73c2a10b5b4fdbb161788427c7b3c0f # install bitcoin binaries RUN set -ex \ && cd /tmp \ && wget -qO bitcoin.tar.gz "$BITCOIN_URL" \ && echo "$BITCOIN_SHA256 bitcoin.tar.gz" | sha256sum -c - \ && mkdir bin \ && tar -xzvf bitcoin.tar.gz -C /tmp/bin --strip-components=2 "bitcoin-$BITCOIN_VERSION/bin/bitcoin-cli" "bitcoin-$BITCOIN_VERSION/bin/bitcoind" "bitcoin-$BITCOIN_VERSION/bin/bitcoin-wallet" \ && cd bin \ && wget -qO gosu "https://github.com/tianon/gosu/releases/download/1.11/gosu-armhf" \ && echo "171b4a2decc920de0dd4f49278d3e14712da5fa48de57c556f99bcdabe03552e gosu" | sha256sum -c - # Making sure the builder build an arm image despite being x64 FROM arm32v7/debian:bullseye-slim COPY --from=builder "/tmp/bin" /usr/local/bin COPY --from=builder /usr/bin/qemu-arm-static /usr/bin/qemu-arm-static ARG BITCOIN_USER_ID=999 ARG BITCOIN_GROUP_ID=999 RUN apt-get update && \ apt-get install -qq --no-install-recommends xxd && \ rm -rf /var/lib/apt/lists/* RUN chmod +x /usr/local/bin/gosu && groupadd -r -g $BITCOIN_GROUP_ID bitcoin && useradd -r -m -u $BITCOIN_USER_ID -g bitcoin bitcoin # create data directory ENV BITCOIN_DATA /data RUN mkdir "$BITCOIN_DATA" \ && chown -R bitcoin:bitcoin "$BITCOIN_DATA" \ && ln -sfn "$BITCOIN_DATA" /home/bitcoin/.bitcoin \ && chown -h bitcoin:bitcoin /home/bitcoin/.bitcoin VOLUME /data COPY docker-entrypoint.sh /entrypoint.sh ENTRYPOINT ["/entrypoint.sh"] EXPOSE 8332 8333 18332 18333 18443 18444 CMD ["bitcoind"]