PluralKit/ci/Dockerfile.rust

46 lines
1.8 KiB
Text
Raw Normal View History

FROM alpine:latest AS builder
WORKDIR /build
2024-12-23 22:31:20 +00:00
RUN apk add rustup build-base
# todo: arm64 target
RUN rustup-init --default-host x86_64-unknown-linux-musl --default-toolchain nightly-2024-08-20 --profile default -y
ENV PATH=/root/.cargo/bin:$PATH
ENV RUSTFLAGS='-C link-arg=-s'
RUN cargo install cargo-chef --locked
# build dependencies first to cache
FROM builder AS recipe-builder
COPY . .
RUN cargo chef prepare --recipe-path recipe.json
FROM builder AS binary-builder
COPY --from=recipe-builder /build/recipe.json recipe.json
RUN cargo chef cook --release --recipe-path recipe.json --target x86_64-unknown-linux-musl
COPY Cargo.toml /build/
COPY Cargo.lock /build/
# this needs to match workspaces in Cargo.toml
COPY lib/libpk /build/lib/libpk
COPY services/api/ /build/services/api
COPY services/dispatch/ /build/services/dispatch
2024-09-14 12:19:47 +09:00
COPY services/gateway/ /build/services/gateway
COPY services/avatars/ /build/services/avatars
RUN cargo build --bin api --release --target x86_64-unknown-linux-musl
RUN cargo build --bin dispatch --release --target x86_64-unknown-linux-musl
2024-09-14 12:19:47 +09:00
RUN cargo build --bin gateway --release --target x86_64-unknown-linux-musl
RUN cargo build --bin avatars --release --target x86_64-unknown-linux-musl
2024-10-26 03:30:58 +09:00
RUN cargo build --bin avatar_cleanup --release --target x86_64-unknown-linux-musl
FROM scratch
COPY --from=binary-builder /build/target/x86_64-unknown-linux-musl/release/api /api
COPY --from=binary-builder /build/target/x86_64-unknown-linux-musl/release/dispatch /dispatch
2024-09-14 12:19:47 +09:00
COPY --from=binary-builder /build/target/x86_64-unknown-linux-musl/release/gateway /gateway
COPY --from=binary-builder /build/target/x86_64-unknown-linux-musl/release/avatars /avatars
2024-10-26 03:30:58 +09:00
COPY --from=binary-builder /build/target/x86_64-unknown-linux-musl/release/avatar_cleanup /avatar_cleanup