Skip to content

Commit 6fd5d82

Browse files
authored
Merge pull request #58 from fanquake/30_0_final
30.x: v30.0
2 parents 9b33051 + 7d21120 commit 6fd5d82

File tree

14 files changed

+1678
-6
lines changed

14 files changed

+1678
-6
lines changed

.github/workflows/build.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,16 @@ on:
1010
- '28.3rc1/**'
1111
- '29.0/**'
1212
- '29.2rc2/**'
13-
- '30.0rc3/**'
13+
- '30.0/**'
1414

1515
jobs:
1616
build:
1717
runs-on: ubuntu-latest
1818
strategy:
1919
matrix:
2020
version:
21-
- '30.0rc3/alpine'
22-
- '30.0rc3'
21+
- '30.0/alpine'
22+
- '30.0'
2323
fail-fast: true
2424
steps:
2525
- name: Checkout

30.0/Dockerfile

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
FROM debian:bookworm-slim AS builder
2+
3+
LABEL maintainer.0="Will Clark (@willcl-ark)"
4+
5+
RUN apt-get update -y \
6+
&& apt-get install -y ca-certificates curl git gnupg gosu python3 wget --no-install-recommends \
7+
&& apt-get clean \
8+
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
9+
10+
ARG TARGETPLATFORM
11+
ENV BITCOIN_VERSION=30.0
12+
ENV SIGS_REPO_URL="https://github.com/bitcoin-core/guix.sigs.git"
13+
ENV SIGS_CLONE_DIR="guix.sigs"
14+
ENV TMPDIR="/tmp/bitcoin_verify_binaries"
15+
16+
COPY verify-${BITCOIN_VERSION}.py .
17+
18+
RUN set -ex \
19+
&& if echo $BITCOIN_VERSION | grep -q "rc" ; then \
20+
VERIFY_VERSION=$(echo $BITCOIN_VERSION | sed 's/\(.*\)rc\([0-9]*\)/\1-rc\2/'); \
21+
else \
22+
VERIFY_VERSION=$BITCOIN_VERSION; \
23+
fi \
24+
&& echo "$VERIFY_VERSION" \
25+
&& if [ "${TARGETPLATFORM}" = "linux/amd64" ]; then export TARGETPLATFORM=x86_64-linux-gnu; fi \
26+
&& if [ "${TARGETPLATFORM}" = "linux/arm64" ]; then export TARGETPLATFORM=aarch64-linux-gnu; fi \
27+
&& if [ "${TARGETPLATFORM}" = "linux/arm/v7" ]; then export TARGETPLATFORM=arm-linux-gnueabihf; fi \
28+
&& git clone ${SIGS_REPO_URL} ${SIGS_CLONE_DIR} \
29+
&& gpg --import "${SIGS_CLONE_DIR}"/builder-keys/* \
30+
&& ./verify-${BITCOIN_VERSION}.py \
31+
--min-good-sigs 6 pub "${VERIFY_VERSION}-${TARGETPLATFORM}" \
32+
&& tar -xzf "${TMPDIR}.${VERIFY_VERSION}-${TARGETPLATFORM}/bitcoin-${BITCOIN_VERSION}-${TARGETPLATFORM}.tar.gz" -C /opt \
33+
&& rm -rf ${SIGS_CLONE_DIR} \
34+
&& rm -rf ${TMPDIR} \
35+
&& rm -rf /opt/bitcoin-${BITCOIN_VERSION}/bin/bitcoin-qt
36+
37+
# Second stage
38+
FROM debian:bookworm-slim
39+
40+
ARG UID=101
41+
ARG GID=101
42+
43+
ENV BITCOIN_DATA=/home/bitcoin/.bitcoin
44+
ENV BITCOIN_VERSION=30.0
45+
ENV PATH=/opt/bitcoin-${BITCOIN_VERSION}/bin:$PATH
46+
47+
RUN groupadd --gid ${GID} bitcoin \
48+
&& if echo "$BITCOIN_VERSION" | grep -q "rc"; then \
49+
PADDED_VERSION=$(echo $BITCOIN_VERSION | sed 's/\([0-9]\+\)\.\([0-9]\+\)rc/\1.\2.0rc/'); \
50+
else \
51+
PADDED_VERSION=$BITCOIN_VERSION; \
52+
fi \
53+
&& echo "Padded version: $PADDED_VERSION" \
54+
&& useradd --create-home --no-log-init -u ${UID} -g ${GID} bitcoin \
55+
&& apt-get update -y \
56+
&& apt-get install -y gosu --no-install-recommends \
57+
&& apt-get clean \
58+
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
59+
60+
COPY --from=builder /opt/bitcoin-${BITCOIN_VERSION} /opt/bitcoin-${BITCOIN_VERSION}
61+
62+
COPY docker-entrypoint.sh /entrypoint.sh
63+
64+
VOLUME ["/home/bitcoin/.bitcoin"]
65+
EXPOSE 8332 8333 18332 18333 18443 18444 38333 38332
66+
67+
ENTRYPOINT ["/entrypoint.sh"]
68+
RUN bitcoind -version | grep "Bitcoin Core daemon version v${PADDED_VERSION}"
69+
CMD ["bitcoind"]

30.0/alpine/Dockerfile

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
# Build stage for Bitcoin Core
2+
FROM alpine:3.22 AS build
3+
4+
ENV CLANG_V=20
5+
6+
RUN apk --no-cache add \
7+
boost-dev \
8+
build-base \
9+
capnproto \
10+
capnproto-dev \
11+
"clang${CLANG_V}" \
12+
cmake \
13+
file \
14+
git \
15+
gnupg \
16+
libevent-dev \
17+
linux-headers \
18+
pkgconf \
19+
python3 \
20+
sqlite-dev \
21+
zeromq-dev
22+
23+
ENV BITCOIN_VERSION=30.0
24+
ENV BITCOIN_PREFIX=/opt/bitcoin-${BITCOIN_VERSION}
25+
ENV BITCOIN_SOURCE_DIR=/bitcoin/src
26+
ENV SIGS_REPO_URL="https://github.com/bitcoin-core/guix.sigs.git"
27+
ENV SIGS_CLONE_DIR="guix.sigs"
28+
ENV VERIFY_SCRIPT_URL="https://raw.githubusercontent.com/bitcoin/bitcoin/v${BITCOIN_VERSION}/contrib/verify-binaries/verify.py"
29+
30+
WORKDIR /bitcoin
31+
COPY verify-${BITCOIN_VERSION}.py .
32+
33+
RUN set -ex \
34+
&& if echo $BITCOIN_VERSION | grep -q "rc" ; then \
35+
VERIFY_VERSION=$(echo $BITCOIN_VERSION | sed 's/\(.*\)rc\([0-9]*\)/\1-rc\2/'); \
36+
ADDRESS="https://bitcoincore.org/bin/bitcoin-core-${BITCOIN_VERSION%%rc*}/test.rc${BITCOIN_VERSION##*rc}"; \
37+
else \
38+
VERIFY_VERSION=$BITCOIN_VERSION; \
39+
ADDRESS="https://bitcoincore.org/bin/bitcoin-core-${VERIFY_VERSION}"; \
40+
fi \
41+
&& echo "$VERIFY_VERSION" \
42+
&& wget ${ADDRESS}/bitcoin-${BITCOIN_VERSION}.tar.gz \
43+
&& wget ${ADDRESS}/SHA256SUMS \
44+
&& wget ${ADDRESS}/SHA256SUMS.asc \
45+
&& git clone ${SIGS_REPO_URL} ${SIGS_CLONE_DIR} \
46+
&& gpg --import "${SIGS_CLONE_DIR}"/builder-keys/* \
47+
&& ./verify-${BITCOIN_VERSION}.py bin SHA256SUMS \
48+
"bitcoin-${BITCOIN_VERSION}.tar.gz" \
49+
&& mkdir -p ${BITCOIN_SOURCE_DIR} \
50+
&& tar -xzf "bitcoin-${BITCOIN_VERSION}.tar.gz" -C ${BITCOIN_SOURCE_DIR} \
51+
&& rm -rf ${SIGS_CLONE_DIR}
52+
53+
WORKDIR "${BITCOIN_SOURCE_DIR}/bitcoin-${BITCOIN_VERSION}"
54+
55+
RUN cmake -B build \
56+
-DBUILD_TESTS=OFF \
57+
-DBUILD_TX=ON \
58+
-DBUILD_UTIL=OFF \
59+
-DCMAKE_BUILD_TYPE=Release \
60+
-DCMAKE_CXX_COMPILER="clang++-${CLANG_V}" \
61+
-DCMAKE_C_COMPILER="clang-${CLANG_V}" \
62+
-DCMAKE_INSTALL_PREFIX:PATH="${BITCOIN_PREFIX}" && \
63+
cmake --build build -j$(nproc) && \
64+
strip build/bin/bitcoin-cli build/bin/bitcoin-tx build/bin/bitcoind build/bin/bitcoin build/bin/bitcoin-node && \
65+
cmake --install build
66+
67+
# Build stage for compiled artifacts
68+
FROM alpine:3.21
69+
70+
ARG UID=100
71+
ARG GID=101
72+
73+
LABEL maintainer.0="Will Clark (@willcl-ark)"
74+
75+
RUN addgroup bitcoin --gid ${GID} --system
76+
RUN adduser --uid ${UID} --system bitcoin --ingroup bitcoin
77+
RUN apk --no-cache add \
78+
capnproto \
79+
libevent \
80+
libzmq \
81+
shadow \
82+
sqlite-libs \
83+
su-exec
84+
85+
ENV BITCOIN_DATA=/home/bitcoin/.bitcoin
86+
ENV BITCOIN_VERSION=30.0
87+
ENV BITCOIN_PREFIX=/opt/bitcoin-${BITCOIN_VERSION}
88+
ENV PATH=/opt/bin:$PATH
89+
90+
COPY --from=build ${BITCOIN_PREFIX} /opt
91+
COPY docker-entrypoint.sh /entrypoint.sh
92+
93+
RUN if echo "$BITCOIN_VERSION" | grep -q "rc"; then \
94+
PADDED_VERSION=$(echo $BITCOIN_VERSION | sed 's/\([0-9]\+\)\.\([0-9]\+\)rc/\1.\2.0rc/'); \
95+
else \
96+
PADDED_VERSION=$BITCOIN_VERSION; \
97+
fi
98+
99+
VOLUME ["/home/bitcoin/.bitcoin"]
100+
101+
EXPOSE 8332 8333 18332 18333 18444
102+
103+
ENTRYPOINT ["/entrypoint.sh"]
104+
105+
RUN bitcoind -version | grep "Bitcoin Core daemon version v${PADDED_VERSION}"
106+
107+
CMD ["bitcoind"]

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@
2626

2727
## Tags
2828

29+
- `30.0` ([30.0/Dockerfile](https://github.com/willcl-ark/bitcoin-core-docker/blob/master/30.0/Dockerfile)) [**multi-platform**]
30+
- `30.0-alpine` ([30.0/alpine/Dockerfile](https://github.com/willcl-ark/bitcoin-core-docker/blob/master/30.0/alpine/Dockerfile))
31+
2932
- `29.1`, `29`, `latest` ([29.1/Dockerfile](https://github.com/willcl-ark/bitcoin-core-docker/blob/master/29.1/Dockerfile)) [**multi-platform**]
3033
- `29.1-alpine`, `29-alpine` ([29.1/alpine/Dockerfile](https://github.com/willcl-ark/bitcoin-core-docker/blob/master/29.1/alpine/Dockerfile))
3134

@@ -37,9 +40,6 @@
3740

3841
## Release Candidates
3942

40-
- `30.0rc3` ([30.0rc3/Dockerfile](https://github.com/willcl-ark/bitcoin-core-docker/blob/master/30.0rc3/Dockerfile)) [**multi-platform**]
41-
- `30.0rc3-alpine` ([30.0rc3/alpine/Dockerfile](https://github.com/willcl-ark/bitcoin-core-docker/blob/master/30.0rc3/alpine/Dockerfile))
42-
4343
- `29.2rc1` ([29.2rc1/Dockerfile](https://github.com/willcl-ark/bitcoin-core-docker/blob/master/29.2rc1/Dockerfile)) [**multi-platform**]
4444
- `29.2rc1-alpine` ([29.2rc1/alpine/Dockerfile](https://github.com/willcl-ark/bitcoin-core-docker/blob/master/29.2rc1/alpine/Dockerfile))
4545

0 commit comments

Comments
 (0)