This is an automated email from the ASF dual-hosted git repository.

zyxxoo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hugegraph-computer.git


The following commit(s) were added to refs/heads/master by this push:
     new 8cd2f183 refactor(vermeer): cross-compile Docker binaries (#353)
8cd2f183 is described below

commit 8cd2f1830c113998bd7450e38de6592515fe6034
Author: imbajin <[email protected]>
AuthorDate: Sun Jul 12 22:40:48 2026 +0800

    refactor(vermeer): cross-compile Docker binaries (#353)
    
    * refactor(vermeer): cross-compile Docker binaries
    
    - pin the Go builder to the native build platform
    - cross-compile binaries for each requested target platform
    - cache Go modules and compiler artifacts across builds
    - isolate UI dependency downloads from source changes
    
    * perf(vermeer): scope target build arguments
    
    - keep target-neutral preparation cacheable across platforms
    - expose target OS and architecture only to final compilation
    - preserve native builder cross-compilation behavior
---
 vermeer/Dockerfile | 21 +++++++++++++++++----
 1 file changed, 17 insertions(+), 4 deletions(-)

diff --git a/vermeer/Dockerfile b/vermeer/Dockerfile
index 44da2502..daa70b9f 100644
--- a/vermeer/Dockerfile
+++ b/vermeer/Dockerfile
@@ -14,14 +14,27 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-FROM golang:1.23-alpine AS builder
+FROM --platform=$BUILDPLATFORM golang:1.23-alpine AS builder
 RUN apk add --no-cache npm bash curl
-COPY ./ /src/
 WORKDIR /src/
 ENV CGO_ENABLED="0"
+
+COPY go.mod go.sum ./
+RUN --mount=type=cache,target=/go/pkg/mod go mod download
+
+COPY scripts/download_ui_assets.sh ./scripts/
+COPY ui/package.json ./ui/
 RUN ./scripts/download_ui_assets.sh
-RUN cd asset && go generate
-RUN go build -o /go/bin/app
+
+COPY ./ ./
+RUN --mount=type=cache,target=/go/pkg/mod \
+    --mount=type=cache,target=/root/.cache/go-build \
+    cd asset && go generate
+ARG TARGETOS
+ARG TARGETARCH
+RUN --mount=type=cache,target=/go/pkg/mod \
+    --mount=type=cache,target=/root/.cache/go-build \
+    GOOS=$TARGETOS GOARCH=$TARGETARCH go build -o /go/bin/app
 
 FROM alpine
 EXPOSE 8080

Reply via email to