# syntax=docker/dockerfile:1
# VERSION nur hier ändern (oder "latest" lassen für Auto-Erkennung der neuesten Release)
ARG VERSION=latest
# ---------- Stage 1: Version auflösen, Download, verify, extract ----------
FROM debian:bookworm-slim AS builder
ARG VERSION
RUN apt-get update && apt-get install -y --no-install-recommends \
wget \
curl \
gnupg \
ca-certificates \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /tmp/bitcoin-build
# Falls VERSION=latest: neueste Release-Version von GitHub abfragen.
# Ausgabe erscheint im Build-Log (mit `docker build --progress=plain` sichtbar).
RUN set -eux; \
if [ "$VERSION" = "latest" ]; then \
RESOLVED_VERSION=$(curl -s https://api.github.com/repos/bitcoin/bitcoin/releases/latest \
| grep '"tag_name"' | sed -E 's/.*"v([^"]+)".*/\1/'); \
else \
RESOLVED_VERSION="$VERSION"; \
fi; \
echo "=============================================="; \
echo " Building Bitcoin Core version: ${RESOLVED_VERSION}"; \
echo "=============================================="; \
echo "${RESOLVED_VERSION}" > /tmp/bitcoin-build/VERSION
RUN set -eux; \
VERSION=$(cat /tmp/bitcoin-build/VERSION); \
wget -4 --timeout=20 --tries=3 -q https://bitcoincore.org/bin/bitcoin-core-${VERSION}/bitcoin-${VERSION}-x86_64-linux-gnu.tar.gz \
&& wget -4 --timeout=20 --tries=3 -q https://bitcoincore.org/bin/bitcoin-core-${VERSION}/SHA256SUMS \
&& wget -4 --timeout=20 --tries=3 -q https://bitcoincore.org/bin/bitcoin-core-${VERSION}/SHA256SUMS.asc
# Builder-Keys importieren und Signatur der SHA256SUMS-Datei prüfen
RUN curl -s "https://api.github.com/repositories/355107265/contents/builder-keys" \
| grep download_url \
| grep -oE "https://[a-zA-Z0-9./-]+" \
| while read url; do curl -s "$url" | gpg --import; done \
&& gpg --verify SHA256SUMS.asc SHA256SUMS
# Checksum des Binary-Archivs gegen die verifizierte SHA256SUMS-Datei prüfen
RUN sha256sum --ignore-missing --check SHA256SUMS
RUN set -eux; \
VERSION=$(cat /tmp/bitcoin-build/VERSION); \
tar -xzf bitcoin-${VERSION}-x86_64-linux-gnu.tar.gz; \
install -m 0755 -o root -g root -t /usr/local/bin \
bitcoin-${VERSION}/bin/bitcoin-cli \
bitcoin-${VERSION}/bin/bitcoind
# ---------- Stage 2: Schlankes Runtime-Image ----------
FROM debian:bookworm-slim
# Bitcoin Core Binaries sind (bis auf glibc) statisch gelinkt,
# daher reichen minimale Runtime-Pakete
RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates \
&& rm -rf /var/lib/apt/lists/* \
&& groupadd --gid 999 bitcoin \
&& useradd --system --uid 999 --gid 999 --create-home --home-dir /home/bitcoin --shell /usr/sbin/nologin bitcoin
COPY --from=builder /usr/local/bin/bitcoind /usr/local/bin/bitcoind
COPY --from=builder /usr/local/bin/bitcoin-cli /usr/local/bin/bitcoin-cli
COPY --from=builder /tmp/bitcoin-build/VERSION /usr/local/share/bitcoin-version
RUN mkdir -p /home/bitcoin/.bitcoin && chown -R bitcoin:bitcoin /home/bitcoin
USER bitcoin
WORKDIR /home/bitcoin
VOLUME ["/home/bitcoin/.bitcoin"]
EXPOSE 8332 8333 28332 28333
ENTRYPOINT ["bitcoind"]
CMD ["-conf=/home/bitcoin/.bitcoin/bitcoin.conf", "-datadir=/home/bitcoin/.bitcoin"]
Start Bitcoin Core in a container:
docker run -d \
--name bitcoin-bitcoin-core \
--restart unless-stopped \
-v /data/bitcoin/bitcoin:/home/bitcoin/.bitcoin \
-p 8332:8332 \
-p 8333:8333 \
-p 28332:28332 \
-p 28333:28333 \
robinvonmises/bitcoin-core:latest
Run Bitcoin Core with Docker Compose:
services:
bitcoin-core:
container_name: bitcoin-core
image: robinvonmises/bitcoin-core:latest
volumes:
- /data/bitcoin/bitcoin:/home/bitcoin/.bitcoin
restart: unless-stopped
ports:
- "8332:8332"
- "8333:8333"
- "28332:28332"
- "28333:28333"
Content type
Image
Digest
sha256:e4f926e78…
Size
40.1 MB
Last updated
2 months ago
docker pull robinvonmises/bitcoin-core