Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .bitcoin/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
*
!.gitignore
Empty file added .gitignore
Empty file.
4 changes: 0 additions & 4 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,3 @@ include:
- path: docker-compose/connectivity-check.yml
- path: docker-compose/metrics.yml
- path: docker-compose/websocket.yml

volumes:
bitcoin-data:
bitcoin-bin:
9 changes: 8 additions & 1 deletion docker-compose/node.usdt.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ services:
privileged: true
volumes:
- bitcoin-data:/home/bitcoin/.bitcoin
- bitcoin-bin:/shared
- /sys/kernel/debug:/sys/kernel/debug
depends_on:
nats:
Expand All @@ -23,3 +22,11 @@ services:
timeout: 3s
retries: 3
start_period: 5s

volumes:
bitcoin-data:
driver: local
driver_opts:
type: none
device: ../.bitcoin
o: bind
8 changes: 4 additions & 4 deletions docker/bitcoin-node-entrypoint.sh
Original file line number Diff line number Diff line change
Expand Up @@ -30,21 +30,21 @@ esac

# Start bitcoind as bitcoin user, in the background
echo "Launching Bitcoin node in $BITCOIN_NETWORK mode..."
/usr/sbin/runuser -u bitcoin -- /shared/bitcoind $NETWORK &
/usr/sbin/runuser -u bitcoin -- $BTC_BIN_PATH/bitcoind $NETWORK &
BITCOIND_PID=$!

# Now wait for the RPC
for i in {1..30}; do
/usr/sbin/runuser -u bitcoin -- /shared/bitcoin-cli $NETWORK getblockchaininfo >/dev/null 2>&1 && break
/usr/sbin/runuser -u bitcoin -- $BTC_BIN_PATH/bitcoin-cli $NETWORK getblockchaininfo >/dev/null 2>&1 && break
sleep 1
done

# Final check
if ! /usr/sbin/runuser -u bitcoin -- /shared/bitcoin-cli $NETWORK getblockchaininfo >/dev/null 2>&1; then
if ! /usr/sbin/runuser -u bitcoin -- $BTC_BIN_PATH/bitcoin-cli $NETWORK getblockchaininfo >/dev/null 2>&1; then
echo "Error: bitcoind did not start in time." >&2
exit 1
fi

echo "Starting ebpf-extractor"
# Run ebpf-extractor as root (needs CAP_SYS_ADMIN for BPF)
exec /usr/local/bin/ebpf-extractor --no-idle-exit --nats-address nats://nats:4222 --bitcoind-path /shared/bitcoind
exec /usr/local/bin/ebpf-extractor --no-idle-exit --nats-address nats://nats:4222 --bitcoind-path $BTC_BIN_PATH/bitcoind
2 changes: 1 addition & 1 deletion docker/bitcoin-node-healthcheck.sh
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,4 @@ case "$BITCOIN_NETWORK" in
;;
esac

exec su - bitcoin -c "/shared/bitcoin-cli $NETWORK getblockchaininfo"
exec su - bitcoin -c "$BTC_BIN_PATH/bitcoin-cli $NETWORK getblockchaininfo"
11 changes: 6 additions & 5 deletions docker/bitcoin-node.dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -82,21 +82,22 @@ RUN apt-get update && apt-get install -y \
# in user land, not as root.
RUN useradd -m -s /bin/bash bitcoin \
&& mkdir -p /home/bitcoin/.bitcoin \
&& mkdir -p /shared \
&& chown -R bitcoin:bitcoin /home/bitcoin /shared
&& chown -R bitcoin:bitcoin /home/bitcoin

# Set bitcoin binary path environment variable
ENV BTC_BIN_PATH=/bitcoin/build/bin

# Copy everything we need from builder
COPY --from=btc-core-builder $BTC_BIN_PATH $BTC_BIN_PATH
COPY --from=peer-observer-builder /peer-observer/scripts/bitcoin-node-entrypoint.sh /peer-observer/scripts/bitcoin-node-entrypoint.sh
COPY --from=peer-observer-builder /peer-observer/scripts/bitcoin-node-healthcheck.sh /peer-observer/scripts/bitcoin-node-healthcheck.sh
COPY --from=peer-observer-builder /peer-observer/target/release/ebpf-extractor /usr/local/bin/ebpf-extractor
COPY --from=btc-core-builder /bitcoin/build/bin/ /shared/

# Expose Bitcoin ports (RPC: 8332, P2P: 8333)
EXPOSE 8332 8333

# Set data directory and shared volume
# Set data directory volume
VOLUME /home/bitcoin/.bitcoin
VOLUME /shared

# Spawn bitcoin daemon
WORKDIR /peer-observer
Expand Down
4 changes: 0 additions & 4 deletions node.mainnet.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,3 @@ include:
- path: docker-compose/connectivity-check.yml
- path: docker-compose/metrics.yml
- path: docker-compose/websocket.yml

volumes:
bitcoin-data:
bitcoin-bin:
5 changes: 0 additions & 5 deletions node.regtest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,3 @@ include:
- path: docker-compose/connectivity-check.yml
- path: docker-compose/metrics.yml
- path: docker-compose/websocket.yml

volumes:
bitcoin-data:
bitcoin-bin:

5 changes: 0 additions & 5 deletions node.signet.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,3 @@ include:
- path: docker-compose/connectivity-check.yml
- path: docker-compose/metrics.yml
- path: docker-compose/websocket.yml

volumes:
bitcoin-data:
bitcoin-bin: