29 lines
864 B
Docker
29 lines
864 B
Docker
ARG RUST_IMAGE=rust:1-bookworm
|
|
FROM --platform=$BUILDPLATFORM ${RUST_IMAGE} AS builder
|
|
|
|
ARG RUST_TARGET=x86_64-unknown-linux-gnu
|
|
ARG CARGO_REGISTRY=sparse+https://rsproxy.cn/index/
|
|
|
|
WORKDIR /app
|
|
|
|
RUN mkdir -p /usr/local/cargo \
|
|
&& printf '[source.crates-io]\nreplace-with = "mirror"\n\n[source.mirror]\nregistry = "%s"\n' "${CARGO_REGISTRY}" > /usr/local/cargo/config.toml
|
|
|
|
RUN apt-get update \
|
|
&& apt-get install -y --no-install-recommends \
|
|
ca-certificates \
|
|
gcc-aarch64-linux-gnu \
|
|
libc6-dev-arm64-cross \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
RUN rustup target add ${RUST_TARGET}
|
|
|
|
ENV CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-linux-gnu-gcc
|
|
|
|
COPY Cargo.toml Cargo.lock ./
|
|
COPY src ./src
|
|
|
|
RUN cargo build --release --target ${RUST_TARGET} \
|
|
&& mkdir -p /out \
|
|
&& cp target/${RUST_TARGET}/release/cdxs /out/cdxs
|