kdash/Dockerfile

30 lines
1.1 KiB
Text
Raw Normal View History

2024-11-15 22:02:35 +00:00
ARG RUST_VERSION="1.82.0"
FROM git.dergrimm.net/dergrimm/muslrust:${RUST_VERSION} AS chef
FROM chef AS planner
WORKDIR /usr/src
RUN mkdir -p kdash_client/src kdash_protocol/src kdash_server/src && touch kdash_client/src/main.rs kdash_protocol/src/lib.rs kdash_server/src/main.rs
COPY Cargo.toml Cargo.lock ./
COPY kdash_client/Cargo.toml kdash_client/Cargo.toml
COPY kdash_protocol/Cargo.toml kdash_protocol/Cargo.toml
COPY kdash_server/Cargo.toml kdash_server/Cargo.toml
RUN cargo chef prepare --recipe-path recipe.json
FROM chef AS builder
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
WORKDIR /usr/src
RUN mkdir bin/
COPY .cargo .cargo
COPY --from=planner /usr/src/recipe.json .
RUN cargo chef cook --release --recipe-path recipe.json
COPY kdash_client kdash_client
COPY kdash_protocol kdash_protocol
COPY kdash_server kdash_server
RUN cargo build --package kdash_server --release && mv target/x86_64-unknown-linux-musl/release/kdash_server bin/kdash_server
FROM docker.io/alpine:3
WORKDIR /usr/src
COPY --from=builder /usr/src/bin/kdash_server .
ENTRYPOINT [ "/usr/src/kdash_server" ]
EXPOSE 8080