mirror of
https://github.com/eth-act/ere.git
synced 2026-02-19 11:54:42 -05:00
115 lines
3.3 KiB
Docker
115 lines
3.3 KiB
Docker
ARG BASE_IMAGE=ubuntu:24.04
|
|
ARG BASE_CUDA_IMAGE=nvidia/cuda:12.9.1-devel-ubuntu24.04
|
|
ARG RUNTIME_IMAGE=ubuntu:24.04
|
|
ARG RUNTIME_CUDA_IMAGE=nvidia/cuda:12.9.1-runtime-ubuntu24.04
|
|
|
|
# Whether to enable CUDA feature or not.
|
|
ARG CUDA
|
|
|
|
FROM $BASE_IMAGE AS base
|
|
FROM $BASE_CUDA_IMAGE AS base_cuda
|
|
FROM base${CUDA:+_cuda} AS build_stage
|
|
|
|
# Taken from https://0xpolygonhermez.github.io/zisk/getting_started/installation.html
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
git \
|
|
xz-utils \
|
|
jq \
|
|
curl \
|
|
build-essential \
|
|
qemu-system \
|
|
libomp-dev \
|
|
libgmp-dev \
|
|
nlohmann-json3-dev \
|
|
protobuf-compiler \
|
|
uuid-dev \
|
|
libgrpc++-dev \
|
|
libsecp256k1-dev \
|
|
libsodium-dev \
|
|
libpqxx-dev \
|
|
nasm \
|
|
libopenmpi-dev \
|
|
openmpi-bin \
|
|
openmpi-common \
|
|
libclang-dev \
|
|
clang \
|
|
gcc-riscv64-unknown-elf \
|
|
libprotobuf-dev \
|
|
&& apt-get clean && rm -rf /var/lib/apt/lists/*
|
|
|
|
# Install rustup
|
|
ARG RUST_VERSION=1.88.0
|
|
|
|
ENV RUSTUP_HOME=/usr/local/rustup \
|
|
CARGO_HOME=/usr/local/cargo \
|
|
PATH=/usr/local/cargo/bin:$PATH
|
|
|
|
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain ${RUST_VERSION} --no-modify-path
|
|
|
|
# Clone repo
|
|
WORKDIR /app
|
|
|
|
RUN git clone https://github.com/han0110/zisk.git --depth 1 --branch patch/v0.15.0-cluster /app
|
|
|
|
# Whether to enable CUDA feature or not.
|
|
ARG CUDA
|
|
|
|
# Default to build for RTX 50 series
|
|
ARG CUDA_ARCH=sm_120
|
|
|
|
# Build binaries
|
|
RUN cargo build --release ${CUDA:+--features gpu}
|
|
|
|
FROM $RUNTIME_IMAGE AS runtime
|
|
FROM $RUNTIME_CUDA_IMAGE AS runtime_cuda
|
|
FROM runtime${CUDA:+_cuda} AS runtime_stage
|
|
|
|
# Taken from https://0xpolygonhermez.github.io/zisk/getting_started/installation.html
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
xz-utils \
|
|
jq \
|
|
curl \
|
|
build-essential \
|
|
qemu-system \
|
|
libomp-dev \
|
|
libgmp-dev \
|
|
nlohmann-json3-dev \
|
|
protobuf-compiler \
|
|
uuid-dev \
|
|
libgrpc++-dev \
|
|
libsecp256k1-dev \
|
|
libsodium-dev \
|
|
libpqxx-dev \
|
|
nasm \
|
|
libopenmpi-dev \
|
|
openmpi-bin \
|
|
openmpi-common \
|
|
libclang-dev \
|
|
clang \
|
|
gcc-riscv64-unknown-elf \
|
|
libprotobuf-dev \
|
|
&& apt-get clean && rm -rf /var/lib/apt/lists/*
|
|
|
|
RUN curl -sSL https://github.com/fullstorydev/grpcurl/releases/download/v1.9.3/grpcurl_1.9.3_linux_x86_64.tar.gz \
|
|
| tar -xz -C /usr/local/bin grpcurl
|
|
|
|
WORKDIR /app
|
|
|
|
# Copy script
|
|
COPY --from=build_stage /app/ziskup/ziskup /app/ziskup/ziskup
|
|
|
|
# Copy binaries (to /usr/local/bin instead of ~/.zisk/bin because we want to mount ~/.zisk later)
|
|
COPY --from=build_stage /app/target/release/cargo-zisk /usr/local/bin/cargo-zisk
|
|
COPY --from=build_stage /app/target/release/libzisk_witness.so /usr/local/bin/libzisk_witness.so
|
|
COPY --from=build_stage /app/target/release/zisk-coordinator /usr/local/bin/zisk-coordinator
|
|
COPY --from=build_stage /app/target/release/zisk-worker /usr/local/bin/zisk-worker
|
|
|
|
# Copy proto for health check
|
|
COPY --from=build_stage /app/distributed/crates/grpc-api/proto/zisk_distributed_api.proto /app/proto/zisk_distributed_api.proto
|
|
|
|
# Copy configs
|
|
COPY --from=build_stage /app/distributed/crates/coordinator/config/ /app/config/coordinator/
|
|
COPY --from=build_stage /app/distributed/crates/worker/config/ /app/config/worker/
|
|
|
|
CMD ["/bin/bash"]
|