50 lines
2.6 KiB
Docker
50 lines
2.6 KiB
Docker
# Rebuild the deployed sources without changing service protocols or storage format.
|
|
ARG GO_IMAGE=golang:1.26.10-bookworm@sha256:632dff7351799a5a9954a48dc06670ade72ee44e8c351cdc0e5a57af2fea21af
|
|
ARG NODE_IMAGE=node:22.23.4-alpine@sha256:fe4f6d74e20370acb04ad889077d14d0f64a9c8ea6a42bc60cddf1e844699914
|
|
FROM ${GO_IMAGE} AS source
|
|
ENV GOTOOLCHAIN=local CGO_ENABLED=0 GOMAXPROCS=2 GOMEMLIMIT=512MiB GOFLAGS=-p=1
|
|
COPY *.tar.gz sources.sha256 /sources/
|
|
RUN cd /sources && sha256sum -c sources.sha256 && \
|
|
mkdir /frpc /rclone /minio /out && \
|
|
tar -xzf frpc.tar.gz -C /frpc --strip-components=1 && \
|
|
tar -xzf rclone.tar.gz -C /rclone --strip-components=1 && \
|
|
tar -xzf minio.tar.gz -C /minio --strip-components=1
|
|
COPY tls-probe.go /probe/main.go
|
|
RUN cd /probe && go build -trimpath -o /out/tls-probe main.go
|
|
|
|
FROM ${NODE_IMAGE} AS frp-web
|
|
COPY --from=source /frpc/web /web
|
|
WORKDIR /web/frpc
|
|
RUN --mount=type=cache,target=/root/.npm npm ci --no-audit --no-fund && npm run build
|
|
WORKDIR /web/frps
|
|
RUN --mount=type=cache,target=/root/.npm npm ci --no-audit --no-fund && npm run build
|
|
|
|
FROM source AS frpc
|
|
WORKDIR /frpc
|
|
COPY --from=frp-web /web/frpc/dist ./web/frpc/dist
|
|
COPY --from=frp-web /web/frps/dist ./web/frps/dist
|
|
RUN --mount=type=cache,target=/go/pkg/mod --mount=type=cache,target=/root/.cache/go-build \
|
|
go build -trimpath -tags frpc -ldflags '-s -w' -o /out/frpc ./cmd/frpc && \
|
|
go build -trimpath -tags frps -ldflags '-s -w' -o /out/frps ./cmd/frps && \
|
|
go version -m /out/frpc > /out/frpc.buildinfo && \
|
|
cp LICENSE /out/frpc.LICENSE
|
|
|
|
FROM source AS rclone
|
|
WORKDIR /rclone
|
|
RUN --mount=type=cache,target=/go/pkg/mod --mount=type=cache,target=/root/.cache/go-build \
|
|
go build -trimpath -ldflags '-s -w -X github.com/rclone/rclone/fs.Version=v1.67.0' -o /out/rclone . && \
|
|
go version -m /out/rclone > /out/rclone.buildinfo && \
|
|
cp COPYING /out/rclone.LICENSE
|
|
|
|
FROM source AS minio
|
|
WORKDIR /minio
|
|
RUN --mount=type=cache,target=/go/pkg/mod --mount=type=cache,target=/root/.cache/go-build \
|
|
go build -trimpath -tags kqueue -ldflags '-s -w -X github.com/minio/minio/cmd.Version=2025-04-22T22:12:26Z -X github.com/minio/minio/cmd.ReleaseTag=RELEASE.2025-04-22T22-12-26Z -X github.com/minio/minio/cmd.CopyrightYear=2025 -X github.com/minio/minio/cmd.CommitID=0d7408fc9969caf07de6a8c3a84f9fbb10a6739e -X github.com/minio/minio/cmd.ShortCommitID=0d7408fc9969' -o /out/minio . && \
|
|
go version -m /out/minio > /out/minio.buildinfo && \
|
|
cp LICENSE /out/minio.LICENSE
|
|
|
|
FROM scratch AS artifacts
|
|
COPY --from=frpc /out/ /out/
|
|
COPY --from=rclone /out/ /out/
|
|
COPY --from=minio /out/ /out/
|