# ---- Stage 1: Build ---- FROM rust:1.94-bookworm AS builder ARG BUILD_TARGET=x86_64-unknown-linux-gnu ENV TARGET=${BUILD_TARGET} WORKDIR /build # Copy workspace manifests COPY Cargo.toml Cargo.lock ./ COPY libs/ libs/ COPY apps/static/ apps/static/ # Pre-build dependencies only RUN cargo fetch # Build the binary RUN --mount=type=cache,target=/usr/local/cargo/registry \ --mount=type=cache,target=/usr/local/cargo/git \ --mount=type=cache,target=target \ cargo build --release --package static-server --target ${TARGET} # ---- Stage 2: Runtime ---- FROM debian:bookworm-slim AS runtime RUN apt-get update && apt-get install -y --no-install-recommends \ ca-certificates \ && rm -rf /var/lib/apt/lists/* WORKDIR /app COPY --from=builder /build/target/${TARGET}/release/static-server /app/static-server ENV RUST_LOG=info ENV STATIC_LOG_LEVEL=info ENV STATIC_BIND=0.0.0.0:8081 ENV STATIC_ROOT=/data ENV STATIC_CORS=true EXPOSE 8081 ENTRYPOINT ["/app/static-server"]