42 lines
996 B
Docker
42 lines
996 B
Docker
# ---- 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"]
|