Skip to content

Commit 16a4cfb

Browse files
committed
dockerfile: disable cgo
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
1 parent 968c0d7 commit 16a4cfb

1 file changed

Lines changed: 9 additions & 46 deletions

File tree

Dockerfile

Lines changed: 9 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,6 @@
33
# xx is a helper for cross-compilation
44
FROM --platform=$BUILDPLATFORM tonistiigi/xx:1.6.1 AS xx
55

6-
# osxcross contains the MacOSX cross toolchain for xx
7-
FROM crazymax/osxcross:14.5-r0-debian AS osxcross
8-
96
FROM golang:1.25.0-alpine@sha256:f18a072054848d87a8077455f0ac8a25886f2397f88bfdd222d6fafbb5bba440 AS build-agent
107
RUN apk add --no-cache build-base
118
WORKDIR /app
@@ -16,50 +13,17 @@ RUN --mount=type=cache,target=/root/.cache \
1613
--mount=type=secret,id=telemetry_api_key \
1714
--mount=type=secret,id=telemetry_endpoint \
1815
--mount=type=secret,id=telemetry_header \
19-
sh -c 'TELEMETRY_API_KEY=$(cat /run/secrets/telemetry_api_key 2>/dev/null || echo "") && TELEMETRY_ENDPOINT=$(cat /run/secrets/telemetry_endpoint 2>/dev/null || echo "") && TELEMETRY_HEADER=$(cat /run/secrets/telemetry_header 2>/dev/null || echo "") && CGO_ENABLED=1 go build -trimpath -ldflags "-s -w -X '"'"'github.com/docker/cagent/cmd/root.Version=$GIT_TAG'"'"' -X '"'"'github.com/docker/cagent/cmd/root.Commit=$GIT_COMMIT'"'"' -X '"'"'github.com/docker/cagent/cmd/root.BuildTime=$BUILD_DATE'"'"' -X '"'"'github.com/docker/cagent/internal/telemetry.TelemetryEndpoint=$TELEMETRY_ENDPOINT'"'"' -X '"'"'github.com/docker/cagent/internal/telemetry.TelemetryAPIKey=$TELEMETRY_API_KEY'"'"' -X '"'"'github.com/docker/cagent/internal/telemetry.TelemetryHeader=$TELEMETRY_HEADER'"'"'" -o /agent .'
16+
sh -c 'TELEMETRY_API_KEY=$(cat /run/secrets/telemetry_api_key 2>/dev/null || echo "") && TELEMETRY_ENDPOINT=$(cat /run/secrets/telemetry_endpoint 2>/dev/null || echo "") && TELEMETRY_HEADER=$(cat /run/secrets/telemetry_header 2>/dev/null || echo "") && go build -trimpath -ldflags "-s -w -X '"'"'github.com/docker/cagent/cmd/root.Version=$GIT_TAG'"'"' -X '"'"'github.com/docker/cagent/cmd/root.Commit=$GIT_COMMIT'"'"' -X '"'"'github.com/docker/cagent/cmd/root.BuildTime=$BUILD_DATE'"'"' -X '"'"'github.com/docker/cagent/internal/telemetry.TelemetryEndpoint=$TELEMETRY_ENDPOINT'"'"' -X '"'"'github.com/docker/cagent/internal/telemetry.TelemetryAPIKey=$TELEMETRY_API_KEY'"'"' -X '"'"'github.com/docker/cagent/internal/telemetry.TelemetryHeader=$TELEMETRY_HEADER'"'"'" -o /agent .'
2017

2118
FROM --platform=$BUILDPLATFORM golang:1.25.0-alpine3.22 AS builder-base
19+
RUN apk add clang
2220
WORKDIR /src
2321
COPY --from=xx / /
22+
ENV CGO_ENABLED=0
2423
ARG TARGETPLATFORM TARGETOS TARGETARCH
2524
ARG GIT_TAG GIT_COMMIT BUILD_DATE
2625

27-
FROM builder-base AS builder-darwin
28-
RUN apk add clang
29-
COPY . ./
30-
RUN --mount=type=bind,from=osxcross,src=/osxsdk,target=/xx-sdk \
31-
--mount=type=cache,target=/root/.cache,id=docker-ai-$TARGETPLATFORM \
32-
--mount=type=cache,target=/go/pkg/mod \
33-
--mount=type=secret,id=telemetry_api_key \
34-
--mount=type=secret,id=telemetry_endpoint \
35-
--mount=type=secret,id=telemetry_header <<EOT
36-
set -x
37-
TELEMETRY_API_KEY=$(cat /run/secrets/telemetry_api_key 2>/dev/null || echo "")
38-
TELEMETRY_ENDPOINT=$(cat /run/secrets/telemetry_endpoint 2>/dev/null || echo "")
39-
TELEMETRY_HEADER=$(cat /run/secrets/telemetry_header 2>/dev/null || echo "")
40-
CGO_ENABLED=1 xx-go build -trimpath -ldflags "-s -w -X 'github.com/docker/cagent/cmd/root.Version=$GIT_TAG' -X 'github.com/docker/cagent/cmd/root.Commit=$GIT_COMMIT' -X 'github.com/docker/cagent/cmd/root.BuildTime=$BUILD_DATE' -X 'github.com/docker/cagent/internal/telemetry.TelemetryEndpoint=$TELEMETRY_ENDPOINT' -X 'github.com/docker/cagent/internal/telemetry.TelemetryAPIKey=$TELEMETRY_API_KEY' -X 'github.com/docker/cagent/internal/telemetry.TelemetryHeader=$TELEMETRY_HEADER'" -o /binaries/cagent-$TARGETOS-$TARGETARCH .
41-
xx-verify --static /binaries/cagent-darwin-$TARGETARCH
42-
EOT
43-
44-
FROM builder-base AS builder-linux
45-
RUN apk add clang
46-
RUN xx-apk add libx11-dev musl-dev gcc
47-
COPY . ./
48-
RUN --mount=type=cache,target=/root/.cache,id=docker-ai-$TARGETPLATFORM \
49-
--mount=type=cache,target=/go/pkg/mod \
50-
--mount=type=secret,id=telemetry_api_key \
51-
--mount=type=secret,id=telemetry_endpoint \
52-
--mount=type=secret,id=telemetry_header <<EOT
53-
set -x
54-
TELEMETRY_API_KEY=$(cat /run/secrets/telemetry_api_key 2>/dev/null || echo "")
55-
TELEMETRY_ENDPOINT=$(cat /run/secrets/telemetry_endpoint 2>/dev/null || echo "")
56-
TELEMETRY_HEADER=$(cat /run/secrets/telemetry_header 2>/dev/null || echo "")
57-
CGO_ENABLED=1 xx-go build -trimpath -ldflags "-s -w -linkmode=external -extldflags '-static' -X 'github.com/docker/cagent/cmd/root.Version=$GIT_TAG' -X 'github.com/docker/cagent/cmd/root.Commit=$GIT_COMMIT' -X 'github.com/docker/cagent/cmd/root.BuildTime=$BUILD_DATE' -X 'github.com/docker/cagent/internal/telemetry.TelemetryEndpoint=$TELEMETRY_ENDPOINT' -X 'github.com/docker/cagent/internal/telemetry.TelemetryAPIKey=$TELEMETRY_API_KEY' -X 'github.com/docker/cagent/internal/telemetry.TelemetryHeader=$TELEMETRY_HEADER'" -o /binaries/cagent-$TARGETOS-$TARGETARCH .
58-
xx-verify --static /binaries/cagent-linux-$TARGETARCH
59-
EOT
60-
61-
FROM builder-base AS builder-windows
62-
RUN apk add zig build-base
26+
FROM builder-base AS builder
6327
COPY . ./
6428
RUN --mount=type=cache,target=/root/.cache,id=docker-ai-$TARGETPLATFORM \
6529
--mount=type=cache,target=/go/pkg/mod \
@@ -70,14 +34,13 @@ RUN --mount=type=cache,target=/root/.cache,id=docker-ai-$TARGETPLATFORM \
7034
TELEMETRY_API_KEY=$(cat /run/secrets/telemetry_api_key 2>/dev/null || echo "")
7135
TELEMETRY_ENDPOINT=$(cat /run/secrets/telemetry_endpoint 2>/dev/null || echo "")
7236
TELEMETRY_HEADER=$(cat /run/secrets/telemetry_header 2>/dev/null || echo "")
73-
CGO_ENABLED=1 CC="zig cc -target x86_64-windows-gnu" CXX="zig c++ -target x86_64-windows-gnu" xx-go build -trimpath -ldflags "-s -w -X 'github.com/docker/cagent/cmd/root.Version=$GIT_TAG' -X 'github.com/docker/cagent/cmd/root.Commit=$GIT_COMMIT' -X 'github.com/docker/cagent/cmd/root.BuildTime=$BUILD_DATE' -X 'github.com/docker/cagent/internal/telemetry.TelemetryEndpoint=$TELEMETRY_ENDPOINT' -X 'github.com/docker/cagent/internal/telemetry.TelemetryAPIKey=$TELEMETRY_API_KEY' -X 'github.com/docker/cagent/internal/telemetry.TelemetryHeader=$TELEMETRY_HEADER'" -o /binaries/cagent-$TARGETOS-$TARGETARCH .
74-
ls -la /binaries
75-
mv /binaries/cagent-$TARGETOS-$TARGETARCH /binaries/cagent-$TARGETOS-$TARGETARCH.exe
76-
xx-verify --static /binaries/cagent-windows-$TARGETARCH.exe
37+
xx-go build -trimpath -ldflags "-s -w -X 'github.com/docker/cagent/cmd/root.Version=$GIT_TAG' -X 'github.com/docker/cagent/cmd/root.Commit=$GIT_COMMIT' -X 'github.com/docker/cagent/cmd/root.BuildTime=$BUILD_DATE' -X 'github.com/docker/cagent/internal/telemetry.TelemetryEndpoint=$TELEMETRY_ENDPOINT' -X 'github.com/docker/cagent/internal/telemetry.TelemetryAPIKey=$TELEMETRY_API_KEY' -X 'github.com/docker/cagent/internal/telemetry.TelemetryHeader=$TELEMETRY_HEADER'" -o /binaries/cagent-$TARGETOS-$TARGETARCH .
38+
xx-verify --static /binaries/cagent-$TARGETOS-$TARGETARCH
39+
if [ "$TARGETOS" = "windows" ]; then
40+
mv /binaries/cagent-$TARGETOS-$TARGETARCH /binaries/cagent-$TARGETOS-$TARGETARCH.exe
41+
fi
7742
EOT
7843

79-
FROM builder-$TARGETOS AS builder
80-
8144
FROM scratch AS local
8245
ARG TARGETOS TARGETARCH
8346
COPY --from=builder /binaries/cagent-$TARGETOS-$TARGETARCH cagent

0 commit comments

Comments
 (0)