diff options
| author | Adrian Freund <adrian@freund.io> | 2024-04-01 18:55:48 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-04-01 16:55:48 +0000 |
| commit | 27259b714f4fe0f3c7cf877333f303e562680c76 (patch) | |
| tree | a8834cfc1c872dc307d359fe472fb2fe143e5fcd /Dockerfile | |
| parent | 0d7fa1747e6f8e6ea7fe89e4d9d4c08ceccd9189 (diff) | |
Speed up docker build (#3627)
Diffstat (limited to 'Dockerfile')
| -rw-r--r-- | Dockerfile | 26 |
1 files changed, 21 insertions, 5 deletions
@@ -1,10 +1,26 @@ -FROM rust:alpine AS build +FROM --platform=$BUILDPLATFORM tonistiigi/xx AS xx +FROM --platform=$BUILDPLATFORM rust:alpine AS build +COPY --from=xx / / + +RUN apk add --no-cache clang lld COPY . /app WORKDIR /app -RUN apk add --update musl-dev openssl-dev openssl-libs-static \ - && CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse \ - OPENSSL_NO_PKG_CONFIG=1 OPENSSL_STATIC=1 OPENSSL_DIR=/usr/ \ - cargo build -p typst-cli --release +RUN --mount=type=cache,target=/root/.cargo/git/db \ + --mount=type=cache,target=/root/.cargo/registry/cache \ + --mount=type=cache,target=/root/.cargo/registry/index \ + CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse \ + cargo fetch + +ARG TARGETPLATFORM +RUN xx-apk add --no-cache musl-dev openssl-dev openssl-libs-static +RUN --mount=type=cache,target=/root/.cargo/git/db \ + --mount=type=cache,target=/root/.cargo/registry/cache \ + --mount=type=cache,target=/root/.cargo/registry/index \ + OPENSSL_NO_PKG_CONFIG=1 OPENSSL_STATIC=1 \ + OPENSSL_DIR=$(xx-info is-cross && echo /$(xx-info)/usr/ || echo /usr) \ + xx-cargo build -p typst-cli --release && \ + cp target/$(xx-cargo --print-target-triple)/release/typst target/release/typst && \ + xx-verify target/release/typst FROM alpine:latest WORKDIR /root/ |
