forked from cerc-io/stack-orchestrator
Merge commit 'f4b3a46109a8da00fdd68d8999160ddc45dcc88a' as 'scripts/agave-container'
This commit is contained in:
commit
25952b4fa7
5 files changed
+1336
No files matched your search
@@ -0,0 +1,81 @@
|
||||
# Unified Agave/Jito Solana image
|
||||
# Supports three modes via AGAVE_MODE env: test, rpc, validator
|
||||
#
|
||||
# Build args:
|
||||
# AGAVE_REPO - git repo URL (anza-xyz/agave or jito-foundation/jito-solana)
|
||||
# AGAVE_VERSION - git tag to build (e.g. v3.1.9, v3.1.8-jito)
|
||||
|
||||
ARG AGAVE_REPO=https://github.com/anza-xyz/agave.git
|
||||
ARG AGAVE_VERSION=v3.1.9
|
||||
|
||||
# ---------- Stage 1: Build ----------
|
||||
FROM rust:1.85-bookworm AS builder
|
||||
|
||||
ARG AGAVE_REPO
|
||||
ARG AGAVE_VERSION
|
||||
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
build-essential \
|
||||
pkg-config \
|
||||
libssl-dev \
|
||||
libudev-dev \
|
||||
libclang-dev \
|
||||
protobuf-compiler \
|
||||
ca-certificates \
|
||||
git \
|
||||
cmake \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
WORKDIR /build
|
||||
RUN git clone "$AGAVE_REPO" --depth 1 --branch "$AGAVE_VERSION" --recurse-submodules agave
|
||||
WORKDIR /build/agave
|
||||
|
||||
# Cherry-pick --public-tvu-address support (anza-xyz/agave PR #6778, commit 9f4b3ae)
|
||||
# This flag only exists on master, not in v3.1.9 — fetch the PR ref and cherry-pick
|
||||
ARG TVU_ADDRESS_PR=6778
|
||||
RUN if [ -n "$TVU_ADDRESS_PR" ]; then \
|
||||
git fetch --depth 50 origin "pull/${TVU_ADDRESS_PR}/head:tvu-pr" && \
|
||||
git cherry-pick --no-commit tvu-pr; \
|
||||
fi
|
||||
|
||||
# Build all binaries using the upstream install script
|
||||
RUN CI_COMMIT=$(git rev-parse HEAD) scripts/cargo-install-all.sh /solana-release
|
||||
|
||||
# ---------- Stage 2: Runtime ----------
|
||||
FROM debian:bookworm-slim
|
||||
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
ca-certificates \
|
||||
libssl3 \
|
||||
libudev1 \
|
||||
curl \
|
||||
sudo \
|
||||
aria2 \
|
||||
python3 \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Create non-root user with sudo
|
||||
RUN useradd -m -s /bin/bash agave \
|
||||
&& echo "agave ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
|
||||
|
||||
# Copy all compiled binaries
|
||||
COPY --from=builder /solana-release/bin/ /usr/local/bin/
|
||||
|
||||
# Copy entrypoint and support scripts
|
||||
COPY entrypoint.py snapshot_download.py /usr/local/bin/
|
||||
COPY start-test.sh /usr/local/bin/
|
||||
RUN chmod +x /usr/local/bin/entrypoint.py /usr/local/bin/start-test.sh
|
||||
|
||||
# Create data directories
|
||||
RUN mkdir -p /data/config /data/ledger /data/accounts /data/snapshots \
|
||||
&& chown -R agave:agave /data
|
||||
|
||||
USER agave
|
||||
WORKDIR /data
|
||||
|
||||
ENV RUST_LOG=info
|
||||
ENV RUST_BACKTRACE=1
|
||||
|
||||
EXPOSE 8899 8900 8001 8001/udp
|
||||
|
||||
ENTRYPOINT ["entrypoint.py"]
|
||||
Reference in new issue
Block a user