6 Commits

Author SHA1 Message Date
Dmitry Ng 34a54ced6a fix: added git global option 'safe.directory' as default 2023-12-23 21:45:32 +03:00
Dmitry Ng 5415ac5b3d change base golang image to 1.20.5 and add multi-platform images build 2023-10-18 22:32:45 +03:00
Dmitry Ng ae8ae3a5e5 change base golang image to 1.19.0 2022-11-21 19:37:06 +03:00
Dmitry Ng 5aa5d31122 remove goreleaser from image 2022-11-21 19:33:42 +03:00
Dmitry Ng 5fc63b3d21 Merge pull request #1 from vxcontrol/feature/add-jq
add jq linux package
2022-11-21 19:21:51 +03:00
Anton Galitsyn 4731fe4481 add jq 2022-11-21 22:50:14 +07:00
2 changed files with 44 additions and 6 deletions
+25 -3
View File
@@ -1,6 +1,6 @@
# 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
@@ -45,9 +45,13 @@ RUN apt-get update -qq && apt-get install -y -q --no-install-recommends \
libc++-dev \
file \
patch \
vim \
jq \
git \
xz-utils \
${OSX_CROSS_REQUIREMENTS} \
&& apt-get clean && rm -rf /var/lib/apt/lists/*
RUN git config --global --add safe.directory '*'
# Building osxcross
FROM osx-cross-base AS osx-cross
@@ -78,7 +82,20 @@ 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 \
&& 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 \
@@ -87,9 +104,14 @@ RUN apt-get update -qq && apt-get install -y -q --no-install-recommends \
gcc-mingw-w64 \
g++-mingw-w64 \
parallel \
&& curl -sfL https://install.goreleaser.com/github.com/goreleaser/goreleaser.sh | sh -s -- -b /usr/local/bin \
&& 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`