FROM rust:1.68.0-slim as builder ENV CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse WORKDIR /usr/src/board COPY Cargo.toml /usr/src/board/Cargo.toml COPY board-frontend /usr/src/board/board-frontend COPY board-network /usr/src/board/board-network COPY board-server /usr/src/board/board-server COPY board-shared /usr/src/board/board-shared # Build with musl to run on Alpine RUN rustup target add x86_64-unknown-linux-musl RUN cargo build --target x86_64-unknown-linux-musl --release --bin board-server FROM alpine:3.17.2 AS runtime COPY --from=builder /usr/src/board/target/x86_64-unknown-linux-musl/release/board-server /usr/local/bin EXPOSE 8080 ENTRYPOINT ["/usr/local/bin/board-server"]