...
1# Based on docker-library's golang 1.6 alpine and wheezy docker files.
2# https://github.com/docker-library/golang/blob/master/1.6/alpine/Dockerfile
3# https://github.com/docker-library/golang/blob/master/1.6/wheezy/Dockerfile
4FROM buildpack-deps:buster-scm
5
6ENV GOLANG_SRC_REPO_URL https://github.com/golang/go
7
8# as of 1.20 Go 1.17 is required to bootstrap
9# see https://github.com/golang/go/issues/44505
10ENV GOLANG_BOOTSTRAP_URL https://go.dev/dl/go1.17.13.linux-amd64.tar.gz
11ENV GOLANG_BOOTSTRAP_SHA256 4cdd2bc664724dc7db94ad51b503512c5ae7220951cac568120f64f8e94399fc
12ENV GOLANG_BOOTSTRAP_PATH /usr/local/bootstrap
13
14# gcc for cgo
15RUN apt-get update && apt-get install -y --no-install-recommends \
16 g++ \
17 gcc \
18 libc6-dev \
19 make \
20 git \
21 && rm -rf /var/lib/apt/lists/*
22
23# Setup the Bootstrap
24RUN mkdir -p "$GOLANG_BOOTSTRAP_PATH" \
25 && curl -fsSL "$GOLANG_BOOTSTRAP_URL" -o golang.tar.gz \
26 && echo "$GOLANG_BOOTSTRAP_SHA256 golang.tar.gz" | sha256sum -c - \
27 && tar -C "$GOLANG_BOOTSTRAP_PATH" -xzf golang.tar.gz \
28 && rm golang.tar.gz
29
30# Get and build Go tip
31RUN export GOROOT_BOOTSTRAP=$GOLANG_BOOTSTRAP_PATH/go \
32 && git clone "$GOLANG_SRC_REPO_URL" /usr/local/go \
33 && cd /usr/local/go/src \
34 && ./make.bash \
35 && rm -rf "$GOLANG_BOOTSTRAP_PATH" /usr/local/go/pkg/bootstrap
36
37# Build Go workspace and environment
38ENV GOPATH /go
39ENV PATH $GOPATH/bin:/usr/local/go/bin:$PATH
40RUN mkdir -p "$GOPATH/src" "$GOPATH/bin" \
41 && chmod -R 777 "$GOPATH"
42
43WORKDIR $GOPATH
View as plain text