mirror of
https://github.com/Retropex/dockerfile-deps.git
synced 2025-05-28 06:12:29 +02:00
Bitcoin 24.1
This commit is contained in:
parent
4f5251c768
commit
561cb2974b
80
Bitcoin/24.1/docker-entrypoint.sh
Executable file
80
Bitcoin/24.1/docker-entrypoint.sh
Executable file
@ -0,0 +1,80 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
if [[ "$1" == "bitcoin-cli" || "$1" == "bitcoin-tx" || "$1" == "bitcoind" || "$1" == "test_bitcoin" ]]; then
|
||||||
|
mkdir -p "$BITCOIN_DATA"
|
||||||
|
|
||||||
|
CONFIG_PREFIX=""
|
||||||
|
if [[ "${BITCOIN_NETWORK}" == "regtest" ]]; then
|
||||||
|
CONFIG_PREFIX=$'regtest=1\n[regtest]'
|
||||||
|
elif [[ "${BITCOIN_NETWORK}" == "testnet" ]]; then
|
||||||
|
CONFIG_PREFIX=$'testnet=1\n[test]'
|
||||||
|
elif [[ "${BITCOIN_NETWORK}" == "mainnet" ]]; then
|
||||||
|
CONFIG_PREFIX=$'mainnet=1\n[main]'
|
||||||
|
elif [[ "${BITCOIN_NETWORK}" == "signet" ]]; then
|
||||||
|
CONFIG_PREFIX=$'signet=1\n[signet]'
|
||||||
|
else
|
||||||
|
BITCOIN_NETWORK="mainnet"
|
||||||
|
CONFIG_PREFIX=$'mainnet=1\n[main]'
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "$BITCOIN_WALLETDIR" ]] && [[ "$BITCOIN_NETWORK" ]]; then
|
||||||
|
NL=$'\n'
|
||||||
|
WALLETDIR="$BITCOIN_WALLETDIR/${BITCOIN_NETWORK}"
|
||||||
|
WALLETFILE="${WALLETDIR}/wallet.dat"
|
||||||
|
mkdir -p "$WALLETDIR"
|
||||||
|
chown -R bitcoin:bitcoin "$WALLETDIR"
|
||||||
|
CONFIG_PREFIX="${CONFIG_PREFIX}${NL}walletdir=${WALLETDIR}${NL}"
|
||||||
|
: "${CREATE_WALLET:=true}"
|
||||||
|
if ! [[ -f "${WALLETFILE}" ]] && [[ "${CREATE_WALLET}" != "false" ]]; then
|
||||||
|
echo "The wallet does not exists, creating it at ${WALLETDIR}..."
|
||||||
|
gosu bitcoin bitcoin-wallet "-datadir=${WALLETDIR}" "-legacy" "-wallet=" create
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
cat <<-EOF > "$BITCOIN_DATA/bitcoin.conf"
|
||||||
|
${CONFIG_PREFIX}
|
||||||
|
printtoconsole=1
|
||||||
|
rpcallowip=::/0
|
||||||
|
${BITCOIN_EXTRA_ARGS}
|
||||||
|
EOF
|
||||||
|
chown bitcoin:bitcoin "$BITCOIN_DATA/bitcoin.conf"
|
||||||
|
|
||||||
|
if [[ "${BITCOIN_TORCONTROL}" ]]; then
|
||||||
|
# Because bitcoind only accept torcontrol= host as an ip only, we resolve it here and add to config
|
||||||
|
TOR_CONTROL_HOST=$(echo ${BITCOIN_TORCONTROL} | cut -d ':' -f 1)
|
||||||
|
TOR_CONTROL_PORT=$(echo ${BITCOIN_TORCONTROL} | cut -d ':' -f 2)
|
||||||
|
if [[ "$TOR_CONTROL_HOST" ]] && [[ "$TOR_CONTROL_PORT" ]]; then
|
||||||
|
TOR_IP=$(getent hosts $TOR_CONTROL_HOST | cut -d ' ' -f 1)
|
||||||
|
echo "torcontrol=$TOR_IP:$TOR_CONTROL_PORT" >> "$BITCOIN_DATA/bitcoin.conf"
|
||||||
|
echo "Added "torcontrol=$TOR_IP:$TOR_CONTROL_PORT" to $BITCOIN_DATA/bitcoin.conf"
|
||||||
|
else
|
||||||
|
echo "Invalid BITCOIN_TORCONTROL"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# ensure correct ownership and linking of data directory
|
||||||
|
# we do not update group ownership here, in case users want to mount
|
||||||
|
# a host directory and still retain access to it
|
||||||
|
chown -R bitcoin "$BITCOIN_DATA"
|
||||||
|
ln -sfn "$BITCOIN_DATA" /home/bitcoin/.bitcoin
|
||||||
|
chown -h bitcoin:bitcoin /home/bitcoin/.bitcoin
|
||||||
|
rm -f /home/bitcoin/.bitcoin/settings.json
|
||||||
|
|
||||||
|
# peers_dat is routinely corrupted, preventing bitcoind to start, see https://github.com/bitcoin/bitcoin/issues/26599
|
||||||
|
peers_dat="/home/bitcoin/.bitcoin/peers.dat"
|
||||||
|
peers_dat_corrupted="/home/bitcoin/.bitcoin/peers_corrupted.dat"
|
||||||
|
if [[ -f "${peers_dat}" ]]; then
|
||||||
|
actual_hash=$(head -c -32 "${peers_dat}" | sha256sum | cut -c1-64 | xxd -r -p | sha256sum | cut -c1-64)
|
||||||
|
expected_hash=$(tail -c 32 "${peers_dat}" | xxd -ps -c 32)
|
||||||
|
if [[ "${actual_hash}" != "${expected_hash}" ]]; then
|
||||||
|
echo "${peers_dat} is corrupted, moving it to ${peers_dat_corrupted}"
|
||||||
|
rm -f "${peers_dat_corrupted}"
|
||||||
|
mv "${peers_dat}" "${peers_dat_corrupted}"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
exec gosu bitcoin "$@"
|
||||||
|
else
|
||||||
|
exec "$@"
|
||||||
|
fi
|
43
Bitcoin/24.1/linuxamd64.Dockerfile
Normal file
43
Bitcoin/24.1/linuxamd64.Dockerfile
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
FROM debian:bullseye-slim as builder
|
||||||
|
|
||||||
|
RUN set -ex \
|
||||||
|
&& apt-get update \
|
||||||
|
&& apt-get install -qq --no-install-recommends ca-certificates dirmngr gosu wget
|
||||||
|
|
||||||
|
ENV BITCOIN_VERSION 24.1
|
||||||
|
ENV BITCOIN_URL https://bitcoincore.org/bin/bitcoin-core-${BITCOIN_VERSION}/bitcoin-${BITCOIN_VERSION}-x86_64-linux-gnu.tar.gz
|
||||||
|
ENV BITCOIN_SHA256 c112af3d19cca7f5b5f942708ca4d522110d8e1dc1c0f8d3077f531c94e5f00f
|
||||||
|
|
||||||
|
# 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-amd64" \
|
||||||
|
&& echo "0b843df6d86e270c5b0f5cbd3c326a04e18f4b7f9b8457fa497b0454c4b138d7 gosu" | sha256sum -c -
|
||||||
|
|
||||||
|
FROM debian:bullseye-slim
|
||||||
|
COPY --from=builder "/tmp/bin" /usr/local/bin
|
||||||
|
|
||||||
|
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 bitcoin && useradd -r -m -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"]
|
48
Bitcoin/24.1/linuxarm32v7.Dockerfile
Normal file
48
Bitcoin/24.1/linuxarm32v7.Dockerfile
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
# 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 24.1
|
||||||
|
ENV BITCOIN_URL https://bitcoincore.org/bin/bitcoin-core-${BITCOIN_VERSION}/bitcoin-${BITCOIN_VERSION}-arm-linux-gnueabihf.tar.gz
|
||||||
|
ENV BITCOIN_SHA256 96d8c7369972848833bddbeaa07351c2843429788151d86bde2ff6f7a756ea52
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|
||||||
|
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 bitcoin && useradd -r -m -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"]
|
48
Bitcoin/24.1/linuxarm64v8.Dockerfile
Normal file
48
Bitcoin/24.1/linuxarm64v8.Dockerfile
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
# 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 24.1
|
||||||
|
ENV BITCOIN_URL https://bitcoincore.org/bin/bitcoin-core-${BITCOIN_VERSION}/bitcoin-${BITCOIN_VERSION}-aarch64-linux-gnu.tar.gz
|
||||||
|
ENV BITCOIN_SHA256 69ef67b290ce05120d8a5a5a5c0aa3e7d4878838286e6dc96935d15fc0d44b56
|
||||||
|
|
||||||
|
# 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-arm64" \
|
||||||
|
&& echo "5e279972a1c7adee65e3b5661788e8706594b458b7ce318fecbd392492cc4dbd gosu" | sha256sum -c -
|
||||||
|
|
||||||
|
# Making sure the builder build an arm image despite being x64
|
||||||
|
FROM arm64v8/debian:bullseye-slim
|
||||||
|
|
||||||
|
COPY --from=builder "/tmp/bin" /usr/local/bin
|
||||||
|
COPY --from=builder /usr/bin/qemu-aarch64-static /usr/bin/qemu-aarch64-static
|
||||||
|
|
||||||
|
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 bitcoin && useradd -r -m -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"]
|
Loading…
Reference in New Issue
Block a user