change base golang image to 1.20.5 and add multi-platform images build

This commit is contained in:
Dmitry Ng
2023-10-18 22:32:45 +03:00
parent ae8ae3a5e5
commit 5415ac5b3d
2 changed files with 41 additions and 5 deletions
+22 -2
View File
@@ -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
+19 -3
View File
@@ -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`