mirror of
https://github.com/vxcontrol/vxbuild-cross.git
synced 2026-07-01 12:17:38 -04:00
change base golang image to 1.20.5 and add multi-platform images build
This commit is contained in:
+22
-2
@@ -1,6 +1,6 @@
|
||||
# Golang docker image options
|
||||
ARG GO_IMAGE=buster
|
||||
ARG GO_VERSION=1.19.0
|
||||
ARG GO_VERSION=1.20.5
|
||||
|
||||
# Libtool arguments
|
||||
ARG LIBTOOL_VERSION=2.4.6_3
|
||||
@@ -78,7 +78,21 @@ RUN gzip -dc "${OSX_CROSS_PATH}/tarballs/libtool-${LIBTOOL_VERSION}.tar.gz" | ta
|
||||
"libtool/${LIBTOOL_VERSION}/lib/"
|
||||
|
||||
# Making the final image with goreleaser and osxcross
|
||||
FROM osx-cross-base AS final
|
||||
FROM --platform=linux/arm64/v8 osx-cross-base AS final-arm64
|
||||
ARG DEBIAN_FRONTEND=noninteractive
|
||||
RUN apt-get update -qq && apt-get install -y -q --no-install-recommends \
|
||||
libltdl-dev \
|
||||
gcc-multilib-i686-linux-gnu \
|
||||
g++-multilib-i686-linux-gnu \
|
||||
gcc-multilib-x86-64-linux-gnu \
|
||||
g++-multilib-x86-64-linux-gnu \
|
||||
gcc-mingw-w64 \
|
||||
g++-mingw-w64 \
|
||||
parallel \
|
||||
jq \
|
||||
&& apt-get clean && rm -rf /var/lib/apt/lists/*
|
||||
|
||||
FROM --platform=linux/amd64 osx-cross-base AS final-amd64
|
||||
ARG DEBIAN_FRONTEND=noninteractive
|
||||
RUN apt-get update -qq && apt-get install -y -q --no-install-recommends \
|
||||
libltdl-dev \
|
||||
@@ -90,6 +104,12 @@ RUN apt-get update -qq && apt-get install -y -q --no-install-recommends \
|
||||
jq \
|
||||
&& apt-get clean && rm -rf /var/lib/apt/lists/*
|
||||
|
||||
###################
|
||||
# multiarch build stage
|
||||
###################
|
||||
|
||||
FROM final-${TARGETARCH} as final
|
||||
|
||||
COPY --from=osx-cross "${OSX_CROSS_PATH}/." "${OSX_CROSS_PATH}/"
|
||||
COPY --from=libtool "${OSX_CROSS_PATH}/." "${OSX_CROSS_PATH}/"
|
||||
ENV PATH=${OSX_CROSS_PATH}/target/bin:$PATH
|
||||
|
||||
@@ -14,7 +14,7 @@ This project based on original repository by [docker/golang-cross](https://githu
|
||||
```Dockerfile
|
||||
# Golang docker image options
|
||||
ARG GO_IMAGE=buster
|
||||
ARG GO_VERSION=1.17.0
|
||||
ARG GO_VERSION=1.20.5
|
||||
|
||||
# Libtool arguments
|
||||
ARG LIBTOOL_VERSION=2.4.6_3
|
||||
@@ -54,6 +54,13 @@ docker build \
|
||||
-t local/vxbuild-cross:1.17.0-stretch .
|
||||
```
|
||||
|
||||
### Use arguments to build multi-platform images
|
||||
```bash
|
||||
docker buildx build \
|
||||
--platform linux/amd64,linux/arm64/v8 \
|
||||
-t local/vxbuild-cross:multiarch .
|
||||
```
|
||||
|
||||
### Use arguments to choose MacOS SDK 10.10
|
||||
```bash
|
||||
docker build \
|
||||
@@ -116,11 +123,20 @@ docker build \
|
||||
* `GOOS=windows GOARCH=amd64 go build`
|
||||
* `GOOS=windows GOARCH=386 go build`
|
||||
|
||||
### Cross compile Go project with cgo (docker container inside)
|
||||
### Cross compile Go project with cgo on linux/amd64 (docker container inside)
|
||||
|
||||
* `GOOS=linux GOARCH=amd64 CC=gcc CXX=g++ CGO_ENABLED=1 go build`
|
||||
* `GOOS=linux GOARCH=386 CC=gcc CXX=g++ CGO_ENABLED=1 go build`
|
||||
* `GOOS=darwin GOARCH=amd64 CC=o64-clang CXX=o64-clang++ CGO_ENABLED=1 go build`
|
||||
* `GOOS=darwin GOARCH=386 CC=o32-clang CXXo32-clang++ CGO_ENABLED=1 go build`
|
||||
* `GOOS=darwin GOARCH=386 CC=o32-clang CXX=o32-clang++ CGO_ENABLED=1 go build`
|
||||
* `GOOS=windows GOARCH=amd64 CC=x86_64-w64-mingw32-gcc CXX=x86_64-w64-mingw32-g++ CGO_ENABLED=1 go build`
|
||||
* `GOOS=windows GOARCH=386 CC=i686-w64-mingw32-gcc CXX=i686-w64-mingw32-g++ CGO_ENABLED=1 go build`
|
||||
|
||||
### Cross compile Go project with cgo on linux/arm64 (docker container inside)
|
||||
|
||||
* `GOOS=linux GOARCH=amd64 CC=x86_64-linux-gnu-gcc CXX=x86_64-linux-gnu-g++ CGO_ENABLED=1 go build`
|
||||
* `GOOS=linux GOARCH=386 CC=i686-linux-gnu-gcc CXX=i686-linux-gnu-g++ CGO_ENABLED=1 go build`
|
||||
* `GOOS=darwin GOARCH=amd64 CC=o64-clang CXX=o64-clang++ CGO_ENABLED=1 go build`
|
||||
* `GOOS=darwin GOARCH=386 CC=o32-clang CXX=o32-clang++ CGO_ENABLED=1 go build`
|
||||
* `GOOS=windows GOARCH=amd64 CC=x86_64-w64-mingw32-gcc CXX=x86_64-w64-mingw32-g++ CGO_ENABLED=1 go build`
|
||||
* `GOOS=windows GOARCH=386 CC=i686-w64-mingw32-gcc CXX=i686-w64-mingw32-g++ CGO_ENABLED=1 go build`
|
||||
|
||||
Reference in New Issue
Block a user