|
1 | 1 | # syntax=docker/dockerfile:1 |
2 | 2 |
|
3 | | -ARG BASE_VARIANT=bullseye |
| 3 | +ARG BASE_IMAGE="ubuntu:20.04" |
4 | 4 | ARG GO_VERSION=1.18.1 |
5 | 5 | ARG XX_VERSION=1.1.0 |
6 | 6 |
|
7 | 7 | ARG DEBIAN_FRONTEND=noninteractive |
8 | | -ARG APT_MIRROR=deb.debian.org |
9 | 8 | ARG GO_LINKMODE=static |
10 | 9 | ARG DEV_SYSTEMD=false |
11 | 10 |
|
@@ -40,20 +39,40 @@ RUN mkdir -p /out |
40 | 39 | FROM scratch AS binary-dummy |
41 | 40 | COPY --from=build-dummy / / |
42 | 41 |
|
43 | | -FROM --platform=$BUILDPLATFORM golang:${GO_VERSION}-${BASE_VARIANT} AS base |
| 42 | +FROM --platform=$BUILDPLATFORM ${BASE_IMAGE} AS golang |
| 43 | +ARG DEBIAN_FRONTEND |
| 44 | +RUN apt-get update && apt-get install --no-install-recommends -y ca-certificates curl jq |
| 45 | +WORKDIR /golang |
| 46 | +RUN curl -m30 --retry 5 --retry-connrefused --retry-delay 5 -sSL "https://go.dev/dl/?mode=json&include=all" -o "godist.json" |
| 47 | +ARG GO_VERSION |
| 48 | +ARG BUILDOS |
| 49 | +ARG BUILDARCH |
| 50 | +ENV PATH="/usr/local/go/bin:$PATH" |
| 51 | +RUN <<EOT |
| 52 | +GO_DIST_FILE=go${GO_VERSION%.0}.${BUILDOS}-${BUILDARCH}.tar.gz |
| 53 | +GO_DIST_URL=https://golang.org/dl/${GO_DIST_FILE} |
| 54 | +SHA256=$(cat godist.json | jq -r ".[] | select(.version==\"go${GO_VERSION%.0}\") | .files[] | select(.filename==\"$GO_DIST_FILE\").sha256") |
| 55 | +curl -sSL "$GO_DIST_URL.asc" -o "go.tgz.asc" |
| 56 | +curl -sSL "$GO_DIST_URL" -o "go.tgz" |
| 57 | +echo "$SHA256 *go.tgz" | sha256sum -c - |
| 58 | +tar -C /usr/local -xzf go.tgz |
| 59 | +go version |
| 60 | +EOT |
| 61 | + |
| 62 | +FROM --platform=$BUILDPLATFORM ${BASE_IMAGE} AS base |
44 | 63 | COPY --from=xx / / |
45 | 64 | RUN echo 'Binary::apt::APT::Keep-Downloaded-Packages "true";' > /etc/apt/apt.conf.d/keep-cache |
46 | | -ARG APT_MIRROR |
47 | | -RUN sed -ri "s/(httpredir|deb).debian.org/${APT_MIRROR:-deb.debian.org}/g" /etc/apt/sources.list \ |
48 | | - && sed -ri "s/(security).debian.org/${APT_MIRROR:-security.debian.org}/g" /etc/apt/sources.list |
49 | 65 | ENV GO111MODULE=off |
50 | 66 | ARG DEBIAN_FRONTEND |
51 | | -# bullseye-backports for cmake |
52 | | -RUN echo "deb https://deb.debian.org/debian bullseye-backports main contrib non-free" >> /etc/apt/sources.list |
53 | 67 | RUN --mount=type=cache,sharing=locked,id=moby-base-aptlib,target=/var/lib/apt \ |
54 | | - --mount=type=cache,sharing=locked,id=moby-base-aptcache,target=/var/cache/apt \ |
55 | | - apt-get update && apt-get install --no-install-recommends -y bash file git make lld && \ |
56 | | - apt-get -y -t bullseye-backports install cmake |
| 68 | + --mount=type=cache,sharing=locked,id=moby-base-aptcache,target=/var/cache/apt \ |
| 69 | + apt-get update && apt-get install --no-install-recommends -y bash ca-certificates cmake file git make lld |
| 70 | +# install go |
| 71 | +COPY --from=golang /usr/local/go /usr/local/go |
| 72 | +ENV GOROOT="/usr/local/go" |
| 73 | +ENV GOPATH="/go" |
| 74 | +ENV PATH="$GOPATH/bin:/usr/local/go/bin:$PATH" |
| 75 | +RUN mkdir -p "$GOPATH/src" "$GOPATH/bin" && chmod -R 777 "$GOPATH" |
57 | 76 |
|
58 | 77 | # go-winres |
59 | 78 | FROM base AS gowinres |
|
0 commit comments