shibarium: build bor + heimdall from source (no published images)

shibaone ships no docker images for the bone fork — only source + .deb config
packages — so both Dockerfiles must clone+build, not FROM a (nonexistent) image.

- bor.Dockerfile: clone shibaone/bor@${BOR_VERSION}, make bor, cp build/bin/bor
  (was: alpine + wrong /src/build/bor path). golang:1.22.1 like upstream.
- cometbft.Dockerfile: clone shibaone/heimdall@${CL_VERSION}, make install
  (was: FROM shibaone/heimdall:v1.0.7-bone — that tag does not exist on any
  registry), then layer the CometBFT init entrypoint.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
rob
2026-06-19 11:46:00 +00:00
parent bda550eef6
commit ee21a0245e
2 changed files with 50 additions and 40 deletions

View File

@@ -1,38 +1,33 @@
# Shibarium bor execution client Dockerfile # Shibarium bor execution client — BUILT FROM SOURCE.
# Build from shibaone/bor source repository. #
# shibaone publishes NO bor docker image (and vanilla 0xpolygon/bor is the WRONG
# fork — Polygon, chainId 137). We mirror the upstream shibaone/bor Dockerfile
# (`make bor` -> build/bin/bor) but clone the pinned tag so the image is
# self-contained. Running `bor server --chain=shibarium` self-configures the
# shibarium genesis (builder/files/genesis-shibarium.json, chainId 109) and the
# bootnodes bundled in builder/files/config.toml.
# #
# Build args: # Build args:
# BOR_REPO - repository URL (default: https://github.com/shibaone/bor) # BOR_REPO - bor source repo (default: https://github.com/shibaone/bor)
# BOR_VERSION - version tag (default: v1.3.9-bone) # BOR_VERSION - bor version tag (passed by the template, e.g. v1.3.9-bone)
#
# The shibaone/bor repo has a working Dockerfile that builds via `make bor`.
# ENTRYPOINT is `bor`
#
# This Dockerfile is used for building shibarium bor from source,
# as shibaone does not publish pre-built Docker images to Docker Hub.
ARG BOR_REPO=https://github.com/shibaone/bor ARG BOR_REPO=https://github.com/shibaone/bor
ARG BOR_VERSION=v1.3.9-bone ARG BOR_VERSION=v1.3.9-bone
# Use a Go builder image to clone and build bor from source FROM golang:1.22.1
FROM golang:1.21-alpine AS builder
RUN apk add --no-cache git make gcc musl-dev ARG BOR_REPO
ARG BOR_VERSION
WORKDIR /src RUN apt-get update -y && apt-get upgrade -y \
RUN git clone --depth 1 --branch ${BOR_VERSION} ${BOR_REPO} . && apt-get install -y --no-install-recommends build-essential git ca-certificates \
&& rm -rf /var/lib/apt/lists/*
RUN make bor WORKDIR /var/lib/bor
RUN git clone --depth 1 --branch ${BOR_VERSION} ${BOR_REPO} . \
&& make bor \
&& cp build/bin/bor /usr/bin/
# Final stage: copy the built binary
FROM alpine:3.18
WORKDIR /usr/local/bin
COPY --from=builder /src/build/bor /usr/local/bin/bor
# Create data directory
RUN mkdir -p /root/.bor RUN mkdir -p /root/.bor
EXPOSE 8545 8546 8547 30303 30303/udp
WORKDIR /root/.bor
ENTRYPOINT ["bor"] ENTRYPOINT ["bor"]

View File

@@ -1,25 +1,40 @@
# Shibarium heimdall node Dockerfile # Shibarium heimdall consensus node — BUILT FROM SOURCE.
# Build from the base heimdall image + copy entrypoint scripts. #
# Uses the standard cometbft-node pattern from vibe-node. # shibaone publishes NO heimdall docker image (only source + release .deb config
# packages), so we cannot `FROM shibaone/heimdall:<tag>` — that tag does not exist
# on any registry. Instead we mirror the upstream shibaone/heimdall Dockerfile
# (`make install`) but clone the pinned tag, then layer the vibe-node CometBFT
# bootstrap entrypoint (init.sh + cometbft-common.sh).
# #
# Build args: # Build args:
# CL_IMAGE - base heimdall image (default: shibaone/heimdall) # CL_REPO - heimdall source repo (default: https://github.com/shibaone/heimdall)
# CL_VERSION - heimdall version tag # CL_VERSION - heimdall version tag (passed by the template, e.g. v1.0.7-bone)
# #
# The entrypoint is init.sh which sources cometbft-common.sh and bootstraps # `make install` puts heimdalld + heimdallcli on /go/bin (already on PATH).
# the node before exec'ing heimdalld start. # The entrypoint is init.sh: it sources cometbft-common.sh, runs heimdalld init
# --chain shibarium, fetches the heimdall-109 genesis from GENESIS_URL, sets the
# shibarium seeds/persistent_peers, then exec's `heimdalld start --rest-server`.
ARG CL_IMAGE=shibaone/heimdall ARG CL_REPO=https://github.com/shibaone/heimdall
ARG CL_VERSION=v1.0.7-bone ARG CL_VERSION=v1.0.7-bone
FROM ${CL_IMAGE}:${CL_VERSION} FROM golang:1.22
# Copy the shared CometBFT helpers and chain-specific entrypoint ARG CL_REPO
ARG CL_VERSION
RUN apt-get update -y && apt-get upgrade -y \
&& apt-get install -y --no-install-recommends build-essential git curl jq ca-certificates \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /var/lib/heimdall
RUN git clone --depth 1 --branch ${CL_VERSION} ${CL_REPO} . \
&& make install
# vibe-node CometBFT bootstrap entrypoint (context is ./shibarium)
COPY ./scripts/cometbft-common.sh /usr/local/bin/cometbft-common.sh COPY ./scripts/cometbft-common.sh /usr/local/bin/cometbft-common.sh
COPY ./scripts/init.sh /usr/local/bin/init.sh COPY ./scripts/init.sh /usr/local/bin/init.sh
RUN chmod +x /usr/local/bin/init.sh /usr/local/bin/cometbft-common.sh
# Make init.sh executable EXPOSE 1317 26656 26657
RUN chmod +x /usr/local/bin/init.sh
# Set entrypoint to our init script
ENTRYPOINT ["init.sh"] ENTRYPOINT ["init.sh"]