Files
fission-console/go-builder/Dockerfile
T

26 lines
965 B
Docker

ARG GO_VERSION=1.25
FROM ghcr.io/fission/builder AS fission-builder
FROM golang:${GO_VERSION}
ENV GOPATH=/usr
ENV GO111MODULE=on
ENV GOTOOLCHAIN=local
WORKDIR ${GOPATH}
COPY --from=fission-builder /builder /builder
# Prebuild stdlib для -buildmode=plugin через dummy plugin.
# Go компилирует всю stdlib с plugin-флагами и кладёт в /root/.cache/go-build.
# Следующие сборки найдут кэш и пропустят stdlib → ~10-30 сек вместо 4 мин.
RUN mkdir -p /tmp/prebuild && \
printf 'package main\n\nimport (\n\t"fmt"\n\t"net/http"\n)\n\nfunc Handler(w http.ResponseWriter, r *http.Request) {\n\tfmt.Fprintf(w, "ok")\n}\n' \
> /tmp/prebuild/main.go && \
cd /tmp/prebuild && \
go mod init prebuild && \
go build -buildmode=plugin -o /tmp/prebuild.so . && \
rm -rf /tmp/prebuild /tmp/prebuild.so
ADD build.sh /usr/local/bin/build
RUN chmod +x /usr/local/bin/build