Docker container to do cross compilation (Linux, windows, macOS, ARM, ARM64) of go packages including support for cgo.
-
Find it on GitHub packages
- golang-cross
docker pull ghcr.io/gythialy/golang-cross:latest
- golang-cross-builder
docker pull ghcr.io/gythialy/golang-cross-builder:v1.22.0-0-bullseye
docker pull ghcr.io/gythialy/golang-cross-builder:v1.17.1
- golang-cross
-
Build your own images
- Build base image (optional)
if running docker on M1 (arm64) macbook:
docker build -f Dockerfile_builder -t ghcr.io/gythialy/golang-cross-builder:v1.17.1 .
docker build --platform linux/amd64 -f Dockerfile.builder -t ghcr.io/gythialy/golang-cross-builder:v1.18 .
Please follow the guide to pack the SDK first or build by GitHub Action
- Build golang-cross image
docker build --build-arg GO_VERSION=1.22.0 \ --build-arg OS_CODENAME=bullseye \ --build-arg GOLANG_DIST_SHA=542e936b19542e62679766194364f45141fde55169db2d8d01046555ca9eb4b8 \ --build-arg GORELEASER_VERSION=1.24.0 \ --build-arg GORELEASER_SHA=4b7d2f1e59ead8047fcef795d66236ff6f8cfe7302c1ff8fb31bd360a3c6f32e \ -f Dockerfile \ -t ghcr.io/gythialy/golang-cross:latest .
The default arguments can be overridden with
--build-arg
- Build base image (optional)
-
Prepare GoReleaser configuration
-
Generate environment variable
PRIVATE_KEY
from the GPG private key (optional), if enable the signing featureexport PRIVATE_KEY=$(cat ~/private_key.gpg | base64)
-
Run docker container to build the binaries
export GO_BUILDER_VERSION=v1.17.1 docker run --rm --privileged \ -e PRIVATE_KEY=$(PRIVATE_KEY) \ -v $(CURDIR):/golang-cross-example \ -v /var/run/docker.sock:/var/run/docker.sock \ -v $(GOPATH)/src:/go/src \ -w /golang-cross-example \ ghcr.io/gythialy/golang-cross:$(GO_BUILDER_VERSION) --snapshot --rm-dist