sharenet/backend/Dockerfile.test-rust

31 lines
No EOL
1.3 KiB
Text

# planner: produce recipe.json
FROM rust:1.89-slim AS planner
WORKDIR /app
RUN apt-get update && apt-get install -y --no-install-recommends pkg-config libssl-dev ca-certificates postgresql-client curl && rm -rf /var/lib/apt/lists/*
RUN cargo install --locked cargo-chef
COPY . .
RUN cargo chef prepare --recipe-path recipe.json
# deps: compile only external crates
FROM rust:1.89-slim AS deps
WORKDIR /app
RUN apt-get update && apt-get install -y --no-install-recommends pkg-config libssl-dev ca-certificates postgresql-client curl && rm -rf /var/lib/apt/lists/*
RUN cargo install --locked cargo-chef
ENV CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse
COPY --from=planner /app/recipe.json recipe.json
RUN cargo chef cook --release --recipe-path recipe.json
# builder: compile local workspace crates using cached deps
FROM rust:1.89-slim AS builder
WORKDIR /app
COPY --from=deps /usr/local/cargo /usr/local/cargo
COPY --from=deps /usr/local/rustup /usr/local/rustup
COPY --from=deps /app/target /app/target
COPY . .
RUN cargo build --release --locked
# runtime: minimal test environment
FROM rust:1.89-slim AS runtime
RUN apt-get update && apt-get install -y --no-install-recommends postgresql-client curl && rm -rf /var/lib/apt/lists/*
WORKDIR /workspace/backend
CMD ["sleep", "infinity"]