support arm64 build

pull/5/head
clsx524 3 years ago
parent 4e91d2e512
commit 69a5e61ceb

@ -78,3 +78,22 @@ $ cargo build
```bash
$ docker build -f dockerfile-plus/Dockerfile .
```
### Creating multi-arch build
- Enable Experiment in docker config. Add {"experimental": true} to docker daemon.json
- Setup BuildKit local build container
```
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
docker buildx create --name multiarch --driver docker-container --use
docker buildx inspect --bootstrap
```
- Run following to start multi-arch build
```
docker buildx build \
--platform linux/arm64/v8,linux/amd64 \
--tag edrevo/dockerfile-plus:latest \
-f dockerfile-plus/Dockerfile \
--load ## or --push to push DockerHub \
.
```

@ -1,19 +1,22 @@
# syntax = docker/dockerfile:1.2.1
FROM clux/muslrust:stable as builder
FROM rust:latest as builder
USER root
WORKDIR /rust-src
COPY . /rust-src
RUN apt update && apt upgrade -y && apt install -y gcc-x86-64-linux-gnu gcc-aarch64-linux-gnu
RUN rustup target add "$(uname -m)-unknown-linux-musl"
RUN --mount=type=cache,target=/rust-src/target \
--mount=type=cache,target=/root/.cargo/git \
--mount=type=cache,target=/root/.cargo/registry \
["cargo", "build", "--release", "--target", "x86_64-unknown-linux-musl", "-p", "dockerfile-plus"]
cargo build --release --target "$(uname -m)-unknown-linux-musl" -p dockerfile-plus --verbose
RUN --mount=type=cache,target=/rust-src/target \
["cp", "/rust-src/target/x86_64-unknown-linux-musl/release/dockerfile-plus", "/usr/local/bin/dockerfile-plus"]
cp "/rust-src/target/$(uname -m)-unknown-linux-musl/release/dockerfile-plus" /usr/local/bin/dockerfile-plus
FROM docker/dockerfile:1.2.1
COPY --from=builder /usr/local/bin/dockerfile-plus /usr/local/bin/dockerfile-plus
ENTRYPOINT ["/usr/local/bin/dockerfile-plus"]
ENTRYPOINT ["/usr/local/bin/dockerfile-plus"]

Loading…
Cancel
Save