Dockerfile.amaru
1 FROM rust:bookworm AS rustbuilder 2 3 RUN apt-get update -y \ 4 && apt-get install -y \ 5 libclang-dev \ 6 ca-certificates \ 7 libssl3 \ 8 llvm-14-runtime \ 9 && rm -rf /var/lib/apt/lists/* 10 11 RUN mkdir -p /usr/src/amaru 12 WORKDIR /usr/src/amaru 13 14 # Setup rust toolchain ───────────────────────────────────────────────────────┐ 15 COPY rust-toolchain.toml /usr/src/amaru/rust-toolchain.toml 16 RUN rustup show 17 18 # Fetch dependencies ─────────────────────────────────────────────────────────┐ 19 COPY Cargo.toml Cargo.lock .cargo /usr/src/amaru/ 20 21 COPY crates/amaru/Cargo.toml /usr/src/amaru/crates/amaru/Cargo.toml 22 COPY crates/amaru/build.rs /usr/src/amaru/crates/amaru/build.rs 23 COPY crates/amaru-consensus/Cargo.toml /usr/src/amaru/crates/amaru-consensus/Cargo.toml 24 RUN mkdir -p crates/amaru-consensus/benches \ 25 && touch crates/amaru-consensus/benches/headers_tree.rs 26 COPY crates/amaru-iter-borrow/Cargo.toml /usr/src/amaru/crates/amaru-iter-borrow/Cargo.toml 27 COPY crates/amaru-kernel/Cargo.toml /usr/src/amaru/crates/amaru-kernel/Cargo.toml 28 COPY crates/amaru-ledger/Cargo.toml /usr/src/amaru/crates/amaru-ledger/Cargo.toml 29 COPY crates/amaru-mempool/Cargo.toml /usr/src/amaru/crates/amaru-mempool/Cargo.toml 30 COPY crates/amaru-minicbor-extra/Cargo.toml /usr/src/amaru/crates/amaru-minicbor-extra/Cargo.toml 31 COPY crates/amaru-network/Cargo.toml /usr/src/amaru/crates/amaru-network/Cargo.toml 32 COPY crates/amaru-ouroboros/Cargo.toml /usr/src/amaru/crates/amaru-ouroboros/Cargo.toml 33 COPY crates/amaru-ouroboros-traits/Cargo.toml /usr/src/amaru/crates/amaru-ouroboros-traits/Cargo.toml 34 COPY crates/amaru-progress-bar/Cargo.toml /usr/src/amaru/crates/amaru-progress-bar/Cargo.toml 35 COPY crates/amaru-slot-arithmetic/Cargo.toml /usr/src/amaru/crates/amaru-slot-arithmetic/Cargo.toml 36 COPY crates/amaru-stores/Cargo.toml /usr/src/amaru/crates/amaru-stores/Cargo.toml 37 COPY crates/amaru-tracing-json/Cargo.toml /usr/src/amaru/crates/amaru-tracing-json/Cargo.toml 38 COPY crates/pure-stage/Cargo.toml /usr/src/amaru/crates/pure-stage/Cargo.toml 39 RUN find crates -mindepth 1 -maxdepth 1 -type d \ 40 -exec mkdir -p {}/src \; \ 41 -exec sh -c 'touch {}/src/lib.rs' \; 42 43 COPY simulation/amaru-sim/Cargo.toml /usr/src/amaru/simulation/amaru-sim/Cargo.toml 44 45 RUN cargo fetch 46 47 # Compile dependencies ───────────────────────────────────────────────────────┐ 48 RUN cargo build 49 50 # Build amaru ────────────────────────────────────────────────────────────────┐ 51 52 COPY crates /usr/src/amaru/crates 53 RUN find crates -type f -name '*.rs' -exec touch {} + \ 54 && cargo build 55 56 COPY data /usr/src/amaru/data 57 COPY Makefile /usr/src/amaru/ 58 59 # Setup start script ──────────────────────────────────────────────────────────┐ 60 COPY docker/start_amaru.sh /usr/local/bin/start_amaru.sh 61 RUN chmod +x /usr/local/bin/start_amaru.sh 62 63 ENTRYPOINT ["start_amaru.sh"]