Skip to content

Commit 38b8364

Browse files
committed
Revert from ruimarinho to our own docker images
We can keep these better maintained, and they work just as well
1 parent 0a69a04 commit 38b8364

File tree

5 files changed

+185
-120
lines changed

5 files changed

+185
-120
lines changed

src/templates/Dockerfile

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
FROM debian:bookworm-slim as builder
2+
ENV DEBIAN_FRONTEND=noninteractive
3+
4+
ARG ARCH
5+
ARG BITCOIN_VERSION
6+
ARG REPO
7+
ARG BRANCH
8+
ARG BITCOIN_URL
9+
10+
# Base requirements
11+
RUN apt-get update && apt-get install -y --no-install-recommends \
12+
ca-certificates \
13+
wget \
14+
&& apt-get clean
15+
16+
# Download binary
17+
RUN if [ -n "${BITCOIN_URL}" ]; then \
18+
wget "${BITCOIN_URL}/bitcoin-core-${BITCOIN_VERSION}/bitcoin-${BITCOIN_VERSION}-${ARCH}-linux-gnu.tar.gz"; \
19+
tar -xzf "bitcoin-${BITCOIN_VERSION}-${ARCH}-linux-gnu.tar.gz" -C /usr/local --strip-components=1; \
20+
fi;
21+
22+
# Extra requirements to build from source
23+
RUN if [ -n "${REPO}" ]; then \
24+
apt-get update && apt-get install -y \
25+
automake \
26+
autotools-dev \
27+
build-essential \
28+
git \
29+
libtool \
30+
libboost-dev \
31+
libevent-dev \
32+
libdb5.3++-dev \
33+
libminiupnpc-dev \
34+
libnatpmp-dev \
35+
libzmq3-dev \
36+
libqrencode-dev \
37+
libsqlite3-dev \
38+
pkg-config \
39+
&& apt-get clean; \
40+
fi;
41+
42+
# Build from source
43+
RUN if [ -n "${REPO}" ]; then \
44+
mkdir build; \
45+
cd /build; \
46+
git clone --depth 1 --branch "${BRANCH}" "https://github.com/${REPO}"; \
47+
cd /build/bitcoin; \
48+
./autogen.sh; \
49+
./configure \
50+
--disable-tests \
51+
--without-gui \
52+
--disable-bench \
53+
--disable-fuzz-binary \
54+
--enable-suppress-external-warnings; \
55+
make -j$(nproc); \
56+
make install; \
57+
fi;
58+
59+
RUN rm -f /usr/local/bin/bitcoin-qt
60+
RUN rm -f /usr/local/bin/test_bitcoin*
61+
62+
# shrink image size with a second stage
63+
FROM debian:bookworm-slim
64+
65+
ARG UID=3338
66+
ARG GID=3338
67+
# env var overrides
68+
ENV UID=$UID
69+
ENV GID=$GID
70+
71+
ENV BITCOIN_DATA=/home/bitcoin/.bitcoin
72+
73+
RUN groupadd --gid ${GID} bitcoin \
74+
&& useradd --create-home --no-log-init -u ${UID} -g ${GID} bitcoin \
75+
&& apt-get update && apt-get install -y --no-install-recommends \
76+
gosu \
77+
tor \
78+
iproute2; \
79+
apt-get clean;
80+
81+
COPY --from=builder /usr/local/bin/bitcoin* /usr/local/bin/
82+
83+
COPY docker-entrypoint.sh /entrypoint.sh
84+
COPY tor-keys/* /home/debian-tor/.tor/keys/
85+
86+
VOLUME ["/home/bitcoin/.bitcoin"]
87+
88+
EXPOSE 8332 8333 18332 18333 18443 18444 38333 38332
89+
90+
ENTRYPOINT ["/entrypoint.sh"]
91+
92+
RUN bitcoind -version | grep -E "Bitcoin Core( Daemon)? version v${BITCOIN_VERSION}"
93+
94+
CMD ["bitcoind"]

src/templates/Dockerfile_custom_build

Lines changed: 0 additions & 75 deletions
This file was deleted.

src/templates/docker-entrypoint.sh

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
#!/bin/bash
2+
set -e
3+
4+
# Add bitcoin user to tor group to read the auth cookie
5+
usermod -a -G debian-tor bitcoin
6+
cp /etc/tor/torrc_original /etc/tor/torrc
7+
mkdir -p /home/debian-tor/.tor/keys
8+
chown -R debian-tor:debian-tor /home/debian-tor
9+
# Start tor in the background
10+
gosu debian-tor tor &
11+
12+
if [ -n "${UID+x}" ] && [ "${UID}" != "0" ]; then
13+
usermod -u "$UID" bitcoin
14+
fi
15+
16+
if [ -n "${GID+x}" ] && [ "${GID}" != "0" ]; then
17+
groupmod -g "$GID" bitcoin
18+
fi
19+
20+
echo "$0: assuming uid:gid for bitcoin:bitcoin of $(id -u bitcoin):$(id -g bitcoin)"
21+
22+
if [ $(echo "$1" | cut -c1) = "-" ]; then
23+
echo "$0: assuming arguments for bitcoind"
24+
25+
set -- bitcoind "$@"
26+
fi
27+
28+
if [ $(echo "$1" | cut -c1) = "-" ] || [ "$1" = "bitcoind" ]; then
29+
mkdir -p "$BITCOIN_DATA"
30+
chmod 700 "$BITCOIN_DATA"
31+
# Fix permissions for home dir.
32+
chown -R bitcoin:bitcoin "$(getent passwd bitcoin | cut -d: -f6)"
33+
# Fix permissions for bitcoin data dir.
34+
chown -R bitcoin:bitcoin "$BITCOIN_DATA"
35+
36+
echo "$0: setting data directory to $BITCOIN_DATA"
37+
38+
set -- "$@" -datadir="$BITCOIN_DATA"
39+
fi
40+
41+
if [ "$1" = "bitcoind" ] || [ "$1" = "bitcoin-cli" ] || [ "$1" = "bitcoin-tx" ]; then
42+
echo
43+
exec gosu bitcoin "$@"
44+
fi
45+
46+
echo
47+
exec "$@"

src/templates/example.graphml

Lines changed: 37 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -2,79 +2,78 @@
22
<key attr.name="version" attr.type="string" for="node" id="version"/>
33
<key attr.name="bitcoin_config" attr.type="string" for="node" id="bitcoin_config"/>
44
<graph edgedefault="directed">
5-
<!-- v22.0 -->
65
<node id="0">
7-
<data key="version">22.0</data>
6+
<data key="version">25.0</data>
87
<data key="bitcoin_config">uacomment=w0</data>
98
</node>
109
<node id="1">
11-
<data key="version">22.0</data>
10+
<data key="version">24.1</data>
1211
<data key="bitcoin_config">uacomment=w1</data>
1312
</node>
1413
<node id="2">
15-
<data key="version">22.0</data>
14+
<data key="version">23.2</data>
1615
<data key="bitcoin_config">uacomment=w2</data>
1716
</node>
1817
<node id="3">
19-
<data key="version">22.0</data>
18+
<data key="version">22.1</data>
2019
<data key="bitcoin_config">uacomment=w3</data>
2120
</node>
22-
<!-- v23.0 -->
2321
<node id="4">
24-
<data key="version">23.0</data>
22+
<data key="version">0.21.2</data>
2523
<data key="bitcoin_config">uacomment=w4</data>
2624
</node>
2725
<node id="5">
28-
<data key="version">23.0</data>
26+
<data key="version">0.20.2</data>
2927
<data key="bitcoin_config">uacomment=w5</data>
3028
</node>
3129
<node id="6">
32-
<data key="version">23.0</data>
30+
<data key="version">0.19.1</data>
3331
<data key="bitcoin_config">uacomment=w6</data>
3432
</node>
3533
<node id="7">
36-
<data key="version">23.0</data>
34+
<data key="version">0.18.1</data>
3735
<data key="bitcoin_config">uacomment=w7</data>
3836
</node>
39-
<!-- v22.0 -->
4037
<node id="8">
41-
<data key="version">22.0</data>
38+
<data key="version">0.18.0</data>
4239
<data key="bitcoin_config">uacomment=w8</data>
4340
</node>
4441
<node id="9">
45-
<data key="version">22.0</data>
42+
<data key="version">0.17.2</data>
4643
<data key="bitcoin_config">uacomment=w9</data>
4744
</node>
4845
<node id="10">
49-
<data key="version">22.0</data>
46+
<data key="version">0.16.3</data>
5047
<data key="bitcoin_config">uacomment=w10</data>
5148
</node>
5249
<!-- test this pull request -->
53-
<!-- <node id="10"> -->
54-
<!-- <data key="version">vasild/bitcoin#relay_tx_to_priv_nets</data> -->
55-
<!-- <data key="bitcoin_config">sensitiverelayowntx=1,debugexclude=addrman,debug=sensitiverelay,debug=tor,debug=net,uacomment=sensitive_relay</data> -->
56-
<!-- </node> -->
50+
<node id="11">
51+
<data key="version">vasild/bitcoin#relay_tx_to_priv_nets</data>
52+
<data key="bitcoin_config">sensitiverelayowntx=1,debugexclude=addrman,debug=sensitiverelay,debug=tor,debug=net,uacomment=sensitive_relay</data>
53+
</node>
5754
<!-- provide addrs for 8 full + 2 block outbound connections -->
58-
<edge id="0" source="10" target="0"></edge>
59-
<edge id="1" source="10" target="1"></edge>
60-
<edge id="2" source="10" target="2"></edge>
61-
<edge id="3" source="10" target="3"></edge>
62-
<edge id="4" source="10" target="4"></edge>
63-
<edge id="5" source="10" target="5"></edge>
64-
<edge id="6" source="10" target="6"></edge>
65-
<edge id="7" source="10" target="7"></edge>
66-
<edge id="8" source="10" target="8"></edge>
67-
<edge id="9" source="10" target="9"></edge>
55+
<edge id="0" source="11" target="0"></edge>
56+
<edge id="1" source="11" target="1"></edge>
57+
<edge id="2" source="11" target="2"></edge>
58+
<edge id="3" source="11" target="3"></edge>
59+
<edge id="4" source="11" target="4"></edge>
60+
<edge id="5" source="11" target="5"></edge>
61+
<edge id="6" source="11" target="6"></edge>
62+
<edge id="7" source="11" target="7"></edge>
63+
<edge id="8" source="11" target="8"></edge>
64+
<edge id="9" source="11" target="9"></edge>
65+
<edge id="10" source="11" target="10"></edge>
6866
<!-- connect the release-version nodes in a ring to start -->
69-
<edge id="10" source="0" target="1"></edge>
70-
<edge id="11" source="1" target="2"></edge>
71-
<edge id="12" source="2" target="3"></edge>
72-
<edge id="13" source="3" target="4"></edge>
73-
<edge id="14" source="4" target="5"></edge>
74-
<edge id="15" source="5" target="6"></edge>
75-
<edge id="16" source="6" target="7"></edge>
76-
<edge id="17" source="7" target="8"></edge>
77-
<edge id="18" source="8" target="9"></edge>
78-
<edge id="19" source="9" target="0"></edge>
67+
<edge id="11" source="0" target="1"></edge>
68+
<edge id="12" source="1" target="2"></edge>
69+
<edge id="13" source="2" target="3"></edge>
70+
<edge id="14" source="3" target="4"></edge>
71+
<edge id="15" source="4" target="5"></edge>
72+
<edge id="16" source="5" target="6"></edge>
73+
<edge id="17" source="6" target="7"></edge>
74+
<edge id="18" source="7" target="8"></edge>
75+
<edge id="19" source="8" target="9"></edge>
76+
<edge id="20" source="9" target="10"></edge>
77+
<edge id="21" source="10" target="0"></edge>
7978
</graph>
8079
</graphml>

src/warnet/tank.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ def add_services(self, services):
211211
repo, branch = self.version.split("#")
212212
build = {
213213
"context": str(TEMPLATES),
214-
"dockerfile": str(TEMPLATES / "Dockerfile_custom_build"),
214+
"dockerfile": str(TEMPLATES / "Dockerfile"),
215215
"args": {
216216
"REPO": repo,
217217
"BRANCH": branch,
@@ -221,13 +221,13 @@ def add_services(self, services):
221221
# assume it's a release version, get the binary
222222
build = {
223223
"context": str(TEMPLATES),
224-
"dockerfile": str(TEMPLATES / f"Dockerfile_{self.version}"),
224+
"dockerfile": str(TEMPLATES / f"Dockerfile"),
225+
"args": {
226+
"ARCH": "x86_64",
227+
"BITCOIN_URL": "https://bitcoincore.org/bin",
228+
"BITCOIN_VERSION": f"{self.version}",
229+
},
225230
}
226-
# Use entrypoint for derived build, but not for compiled build
227-
services[self.container_name].update(
228-
{"entrypoint": "/warnet_entrypoint.sh"}
229-
)
230-
231231
# Add the bitcoind service
232232
services[self.container_name].update(
233233
{

0 commit comments

Comments
 (0)