From d2e59b267f9caca3b7113bab465ee45e35498e4a Mon Sep 17 00:00:00 2001 From: Veirt Date: Fri, 2 Aug 2024 01:51:55 +0800 Subject: [PATCH] build: setup multiplatform build --- .github/workflows/build.yml | 4 ++++ Dockerfile | 14 +++++--------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0efa6ed..113eed6 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -24,6 +24,9 @@ jobs: - name: Checkout uses: actions/checkout@v4 + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 @@ -53,6 +56,7 @@ jobs: context: . push: ${{ github.event_name != 'pull_request' }} tags: ${{ steps.meta.outputs.tags }} + platforms: linux/amd64,linux/arm64 labels: ${{ steps.meta.outputs.labels }} cache-from: type=gha cache-to: type=gha,mode=max diff --git a/Dockerfile b/Dockerfile index d582b45..d685e57 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,22 +1,18 @@ -FROM rust:1.80 AS build - -WORKDIR /usr/src -RUN apt-get update -y && \ - apt-get install -y --no-install-recommends musl-tools && \ - rustup target add x86_64-unknown-linux-musl +FROM --platform=$BUILDPLATFORM rust:1.80-alpine AS build +RUN apk add musl-dev --no-cache +WORKDIR /usr/src RUN USER=root cargo new --bin vesta WORKDIR /usr/src/vesta COPY Cargo.toml Cargo.lock ./ COPY src ./src -RUN cargo install --target x86_64-unknown-linux-musl --path . - +RUN cargo build --release FROM scratch WORKDIR /app COPY ./static static -COPY --from=build /usr/src/vesta/target/x86_64-unknown-linux-musl/release/vesta . +COPY --from=build /usr/src/vesta/target/release/vesta /app/vesta CMD ["/app/vesta"]