multi-stage build dockerfile

This commit is contained in:
Jeremy Martin-Cocher 2025-06-09 18:43:13 -05:00
parent 3de0dc5ba3
commit 53571f34b7
No known key found for this signature in database
GPG Key ID: 0B0904633E86D26B

View File

@ -1,5 +1,5 @@
# ---------- Dockerfile ----------
FROM rust
FROM rust AS builder
# 0) Install build deps (same as you had)
RUN apt-get update && \
@ -13,11 +13,22 @@ RUN cargo build --release
# 2) Keep the binary on $PATH (optional convenience)
RUN install -Dm755 target/release/zgs_node /usr/local/bin/zgs_node
# 3) Persist chain data
FROM debian:bookworm-slim
# 3) Install required runtime libs
RUN apt-get update && \
apt-get install -y libssl3 ca-certificates && \
rm -rf /var/lib/apt/lists/*
# 4) Copy binary from builder
COPY --from=builder /usr/local/bin/zgs_node /usr/local/bin/zgs_node
# 5) Persist chain data
VOLUME ["/data"]
###############################################################################
# 4) Runtime flags grab everything from env vars that youll pass with
# 6) Runtime flags grab everything from env vars that youll pass with
# `docker run -e …`. Shell-form CMD lets us interpolate ${…} at start-time.
###############################################################################
CMD zgs_node \
@ -27,3 +38,4 @@ CMD zgs_node \
--blockchain-rpc-endpoint "${STORAGE_BLOCKCHAIN_RPC_ENDPOINT:?missing STORAGE_BLOCKCHAIN_RPC_ENDPOINT}" \
--network-enr-address "${STORAGE_ENR_ADDRESS:?missing STORAGE_ENR_ADDRESS}" \
--db-max-num-chunks "${STORAGE_DB_MAX_NUM_SECTORS:-8000000000}"