Part of https://www.notion.so/Create-stacks-for-mainnet-1f2a6b22d4728034be4be2c51decf94e Co-authored-by: Shreerang Kale <shreerangkale@gmail.com> Reviewed-on: #1 Co-authored-by: shreerang <shreerang@noreply.git.vdb.to> Co-committed-by: shreerang <shreerang@noreply.git.vdb.to>
57 lines
1.4 KiB
Docker
57 lines
1.4 KiB
Docker
# -------- Stage 1: Build --------
|
|
FROM debian:bookworm-slim AS builder
|
|
|
|
ARG BACKEND=softsign
|
|
ARG VERSION=main
|
|
|
|
# Install build dependencies
|
|
RUN apt-get update && \
|
|
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
|
|
build-essential \
|
|
clang \
|
|
curl \
|
|
git \
|
|
pkg-config \
|
|
libsodium-dev \
|
|
libssl-dev \
|
|
ca-certificates && \
|
|
apt-get clean && rm -rf /var/lib/apt/lists/*
|
|
|
|
# Create non-root user
|
|
RUN useradd -m builder
|
|
USER builder
|
|
WORKDIR /home/builder
|
|
|
|
ENV PATH="/home/builder/.cargo/bin:$PATH"
|
|
|
|
# Install Rust
|
|
RUN curl https://sh.rustup.rs -sSf | sh -s -- -y && \
|
|
rustup component add rustfmt clippy
|
|
|
|
# Clone and build TMKMS
|
|
RUN git clone --depth 1 --branch ${VERSION} https://github.com/iqlusioninc/tmkms.git && \
|
|
cd tmkms && \
|
|
cargo build --release --features=${BACKEND}
|
|
|
|
# -------- Stage 2: Runtime --------
|
|
FROM debian:bookworm-slim
|
|
|
|
# Install runtime dependencies only
|
|
RUN apt-get update && \
|
|
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
|
|
libssl3 \
|
|
libsodium23 \
|
|
ca-certificates && \
|
|
apt-get clean && rm -rf /var/lib/apt/lists/*
|
|
|
|
# Copy compiled binary
|
|
COPY --from=builder /home/builder/tmkms/target/release/tmkms /usr/local/bin/tmkms
|
|
|
|
# Create runtime user
|
|
RUN useradd -m tmkmsuser
|
|
USER tmkmsuser
|
|
WORKDIR /home/tmkmsuser
|
|
|
|
# Default command, override with `docker run ... bash` etc.
|
|
CMD ["tmkms"]
|