zrok/docker/images/cross-build/README.md

29 lines
1.1 KiB
Markdown
Raw Normal View History

# Cross-build Container for Building the Linux Executables for this zrok Project
Running this container produces one snapshot executable for zrok from the current checkout, even if dirty. Platform choices are: `amd64`, `arm64`, `arm` (the arm/v7 "armhf" ABI target), and `armel` (the arm/v7 "armel" ABI). You may specify the target architecture as a parameter to the `docker run` command.
## Build the Container Image
You only need to build the container image once unless you change the Dockerfile or `./linux-build.sh`.
```bash
# build a container image named "zrok-builder"
docker buildx build -t zrok-builder ./docker/images/cross-build --load;
```
## Run the Container to Build Executables for the Desired Architectures
Executing the following `docker run` command will:
1. Mount the top-level of this repo on the container's `/mnt`
2. Run `linux-build.sh ${@}` inside the container
3. Deposit built executable in `./dist/`
```bash
# cross-build for arm64/aarch64 architecture on Linux
docker run --user "${UID}" --rm --volume=${HOME}/.cache/go-build:/usr/share/go --volume "${PWD}:/mnt" zrok-builder arm64
```
You will find the built artifacts in `./dist/`.