@@ -20,7 +20,25 @@ RUN --mount=type=cache,target=/go/pkg/mod \
2020 go mod download
2121ENV CGO_ENABLED=1
2222
23- FROM builder-base AS builder
23+ FROM builder-base AS builder-linux
24+ ARG TARGETPLATFORM
25+ ARG TARGETOS
26+ ARG TARGETARCH
27+ RUN --mount=type=cache,target=/var/cache/apk,id=apk-$TARGETPLATFORM,sharing=locked \
28+ xx-apk add musl-dev
29+ COPY . ./
30+ ARG GIT_TAG
31+ ARG GIT_COMMIT
32+ RUN --mount=type=cache,target=/root/.cache/go-build,id=go-build-$TARGETPLATFORM \
33+ --mount=type=cache,target=/go/pkg/mod <<EOT
34+ set -ex
35+ test "$TARGETOS" = "linux"
36+ export XX_GO_PREFER_C_COMPILER=zig
37+ xx-go build -trimpath -tags no_audio -ldflags "-s -w -linkmode=external -X 'github.com/docker/docker-agent/pkg/version.Version=$GIT_TAG' -X 'github.com/docker/docker-agent/pkg/version.Commit=$GIT_COMMIT'" -o /binaries/docker-agent-$TARGETOS-$TARGETARCH .
38+ xx-verify --static /binaries/docker-agent-$TARGETOS-$TARGETARCH
39+ EOT
40+
41+ FROM builder-base AS builder-cross
2442ARG TARGETPLATFORM
2543ARG TARGETOS
2644ARG TARGETARCH
4563
4664FROM scratch AS local
4765ARG TARGETOS TARGETARCH
48- COPY --from=builder /binaries/docker-agent-$TARGETOS-$TARGETARCH* docker-agent
66+ COPY --from=builder-cross /binaries/docker-agent-$TARGETOS-$TARGETARCH* docker-agent
4967
5068FROM scratch AS cross
51- COPY --from=builder /binaries .
69+ COPY --from=builder-cross /binaries .
5270
5371FROM alpine:${ALPINE_VERSION}
5472RUN apk add --no-cache ca-certificates docker-cli && \
@@ -58,7 +76,7 @@ ARG TARGETOS TARGETARCH
5876ENV DOCKER_MCP_IN_CONTAINER=1
5977ENV TERM=xterm-256color
6078COPY --from=docker/mcp-gateway:v2 /docker-mcp /usr/local/lib/docker/cli-plugins/
61- COPY --from=builder /binaries/docker-agent-$TARGETOS-$TARGETARCH /docker-agent
79+ COPY --from=builder-linux /binaries/docker-agent-$TARGETOS-$TARGETARCH /docker-agent
6280USER docker-agent
6381WORKDIR /work
6482ENTRYPOINT ["/docker-agent" ]
0 commit comments