FROM rust:1.64-alpine AS build
WORKDIR /src

COPY Cargo.toml .
COPY src ./src

RUN rustup target add x86_64-unknown-linux-musl
RUN apk add musl-dev clang pkgconfig openssl-dev
RUN update-ca-certificates

RUN --mount=type=cache,target=/usr/local/cargo/git/db \
    --mount=type=cache,target=/usr/local/cargo/registry/cache \
    --mount=type=cache,target=/usr/local/cargo/registry/index \
    cargo build --target x86_64-unknown-linux-musl --release

FROM alpine:3.16

COPY --from=build /src/target/x86_64-unknown-linux-musl/release/todolist_demo_service_linux /todolist_demo_service

EXPOSE 8080

ENTRYPOINT [ "/todolist_demo_service" ]
