26 lines
965 B
Docker
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
|