|
1 | | -FROM rust:1.61-slim-bullseye AS auditor |
| 1 | +FROM --platform=$BUILDPLATFORM rust:1.61-slim-bullseye AS auditor |
2 | 2 | RUN apt-get update && \ |
3 | 3 | apt-get install -y --no-install-recommends pkg-config=0.29.2-1 libssl-dev=1.1.1n-1+deb11u1 && \ |
4 | 4 | USER=root cargo new --bin highlights && \ |
5 | 5 | cargo install cargo-audit |
6 | 6 | COPY ["Cargo.*", "./"] |
7 | 7 | RUN cargo audit -D unsound -D yanked |
8 | 8 |
|
9 | | -FROM rust:1.61-alpine3.15 AS builder |
| 9 | +FROM --platform=$BUILDPLATFORM rust:1.61-alpine3.15 AS builder |
10 | 10 | RUN apk add --no-cache --update musl-dev=1.2.2-r7 && \ |
11 | 11 | USER=root cargo new --bin highlights |
| 12 | + |
| 13 | +ARG RUSTTARGET |
| 14 | +ARG MUSLHOST |
| 15 | +ARG MUSLTARGET |
| 16 | +RUN if [[ ! -z "$RUSTTARGET" ]]; then \ |
| 17 | + rustup target add $RUSTTARGET && \ |
| 18 | + wget https://more.musl.cc/10.2.1/$MUSLHOST/$MUSLTARGET-cross.tgz && \ |
| 19 | + tar xzf $MUSLTARGET-cross.tgz; \ |
| 20 | + fi |
| 21 | + |
12 | 22 | WORKDIR /highlights |
13 | 23 | COPY ["Cargo.toml", "Cargo.lock", "./"] |
14 | | -RUN cargo build --release && \ |
15 | | - rm src/*.rs && \ |
16 | | - rm ./target/release/deps/highlights* |
| 24 | +RUN cargo fetch ${RUSTTARGET:+--target $RUSTTARGET} |
| 25 | +RUN if [[ ! -z "$RUSTTARGET" ]]; then \ |
| 26 | + export CC=/$MUSLTARGET-cross/bin/$MUSLTARGET-gcc; \ |
| 27 | + mkdir .cargo && \ |
| 28 | + echo "[target.$RUSTTARGET]" > .cargo/config.toml && \ |
| 29 | + echo "linker = \"$CC\"" >> .cargo/config.toml; \ |
| 30 | + fi; \ |
| 31 | + cargo build --release ${RUSTTARGET:+--target $RUSTTARGET} && \ |
| 32 | + rm src/main.rs target/$RUSTTARGET/release/deps/highlights* |
17 | 33 | COPY ["src", "./src"] |
18 | | -RUN cargo build --release |
| 34 | +RUN if [[ ! -z "$RUSTTARGET" ]]; then \ |
| 35 | + export CC=/$MUSLTARGET-cross/bin/$MUSLTARGET-gcc; \ |
| 36 | + fi; \ |
| 37 | + cargo build --release ${RUSTTARGET:+--target $RUSTTARGET} && \ |
| 38 | + if [[ ! -z "$RUSTTARGET" ]]; then \ |
| 39 | + mv target/$RUSTTARGET/release/highlights target/release/highlights; \ |
| 40 | + fi |
19 | 41 |
|
20 | 42 | FROM alpine:3.15.0 |
21 | 43 | RUN apk add --no-cache --update tini=0.19.0-r0 && \ |
|
0 commit comments