Sign inSign up

robinvonmises/bitcoin-core

By robinvonmises

Updated 2 months ago

Image
0

110

robinvonmises/bitcoin-core repository overview

Bitcoin Core Docker Image

Dockerfile

# 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"]

Run with Docker

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

Docker Compose Example

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"

Tag summary

Content type

Image

Digest

sha256:e4f926e78

Size

40.1 MB

Last updated

2 months ago

docker pull robinvonmises/bitcoin-core