This repository has been archived on 2024-08-04. You can view files and clone it, but cannot push or open issues or pull requests.
stagex/go/Dockerfile

94 lines
2.6 KiB
Docker
Raw Normal View History

2023-12-14 16:27:58 +00:00
ARG REGISTRY=local
ARG BUSYBOX_VERSION=latest
2023-12-10 18:05:50 +00:00
FROM ${REGISTRY}/bash:latest as bash
FROM ${REGISTRY}/gcc:latest as gcc
FROM ${REGISTRY}/binutils:latest as binutils
FROM ${REGISTRY}/musl:latest as musl
2023-12-14 16:27:58 +00:00
FROM ${REGISTRY}/busybox:${BUSYBOX_VERSION} as base
ENV GOOS=linux
ENV CGO_ENABLED=0
COPY --from=gcc . /
2023-12-14 16:27:58 +00:00
COPY --from=bash . /
COPY --from=musl . /
2023-12-14 16:27:58 +00:00
RUN rm /bin/ar
COPY --from=binutils . /
FROM base as build-stage1
2023-11-09 10:12:11 +00:00
ENV GO_SITE=https://dl.google.com/go
ENV GO_VERSION=1.4-bootstrap-20171003
ENV GO_HASH=f4ff5b5eb3a3cae1c993723f3eab519c5bae18866b5e5f96fe1102f0cb5c3e52
ENV GOROOT_FINAL=/home/user/go-stage1
ENV GOROOT=${GOROOT_FINAL}
ENV DEST=${GOROOT_FINAL}
2023-12-14 16:27:58 +00:00
ENV GOBIN=${GOROOT_FINAL}/bin
2023-11-09 10:12:11 +00:00
RUN wget ${GO_SITE}/go${GO_VERSION}.tar.gz
2023-12-14 16:27:58 +00:00
RUN echo "${GO_HASH} go${GO_VERSION}.tar.gz" | sha256sum -c
2023-11-09 10:12:11 +00:00
RUN tar -xzf go${GO_VERSION}.tar.gz
WORKDIR go
RUN set -eux; \
cd src; \
bash make.bash; \
cd ..; \
mkdir -p ${DEST}; \
cp -R bin lib pkg src ${DEST}
2023-11-02 12:12:38 +00:00
2023-12-14 16:27:58 +00:00
FROM base as build-stage2
COPY --from=build-stage1 /home/user/go-stage1 go-stage1
2023-11-09 10:12:11 +00:00
ENV GO_VERSION=1.19.11
ENV GO_HASH=e25c9ab72d811142b7f41ff6da5165fec2d1be5feec3ef2c66bc0bdecb431489
ENV GO_SITE=https://storage.googleapis.com/golang
2023-11-02 12:12:38 +00:00
ENV GO11MODULE=off
ENV GOROOT_BOOTSTRAP=/home/user/go-stage1
ENV GOROOT_FINAL=/home/user/go-stage2
ENV GOROOT=${GOROOT_FINAL}
ENV DEST=${GOROOT_FINAL}
2023-12-14 16:27:58 +00:00
ENV GOBIN=${GOROOT_FINAL}/bin
2023-11-09 10:12:11 +00:00
RUN wget ${GO_SITE}/go${GO_VERSION}.src.tar.gz
2023-12-14 16:27:58 +00:00
RUN echo "${GO_HASH} go${GO_VERSION}.src.tar.gz" | sha256sum -c
2023-11-09 10:12:11 +00:00
RUN tar -xvzf go${GO_VERSION}.src.tar.gz
WORKDIR go
RUN set -eux; \
cd src; \
bash make.bash; \
cd ..; \
mkdir -p ${DEST}; \
cp -R bin lib pkg src ${DEST}
2023-11-09 10:12:11 +00:00
2023-12-14 16:27:58 +00:00
FROM base as build
COPY --from=build-stage2 /home/user/go-stage2 go-stage2
2023-11-09 10:12:11 +00:00
ENV GO_VERSION=1.21.4
ENV GO_HASH=47b26a83d2b65a3c1c1bcace273b69bee49a7a7b5168a7604ded3d26a37bd787
ENV GO_SITE=https://storage.googleapis.com/golang
2023-11-02 12:12:38 +00:00
ENV GOPROXY=off
ENV GOTOOLCHAIN=local
ENV GOFLAGS=-mod=vendor
ENV GO11MODULE=on
ENV GOROOT_BOOTSTRAP=/home/user/go-stage2
ENV GOROOT_FINAL="/lib/go"
ENV GOBIN=${GOROOT_FINAL}/bin
2023-12-14 16:27:58 +00:00
ENV GOROOT=/home/user/go-stage2
ENV DEST=/home/user/rootfs
2023-11-09 10:12:11 +00:00
RUN wget ${GO_SITE}/go${GO_VERSION}.src.tar.gz
2023-12-14 16:27:58 +00:00
RUN echo "${GO_HASH} go${GO_VERSION}.src.tar.gz" | sha256sum -c
2023-11-09 10:12:11 +00:00
RUN tar -xvzf go${GO_VERSION}.src.tar.gz
WORKDIR go
RUN set -eux; \
cd src; \
bash make.bash; \
cd ..; \
mkdir -p ${DEST}; \
cp -R bin lib pkg src ${DEST}
2023-11-02 12:12:38 +00:00
2023-12-14 16:27:58 +00:00
FROM base as test
COPY --from=build /home/user/rootfs /
ADD test.go .
RUN set -eux; \
go build test.go; \
./test | grep "Success"
2023-12-12 17:45:39 +00:00
FROM scratch as package
2023-12-14 16:27:58 +00:00
COPY --from=build /home/user/rootfs /
2023-11-09 10:12:11 +00:00
USER 100:100
ENTRYPOINT ["/bin/go"]
CMD ["version"]