From 6dd69c80b538caf037522085f77db16a0c31a866 Mon Sep 17 00:00:00 2001 From: Johnathon Hornby Date: Fri, 26 Sep 2025 11:55:50 -0400 Subject: [PATCH 1/2] fix(infra): ensure base images use target platform --- admission-server/Dockerfile | 4 ++-- cdn-server/Dockerfile | 4 ++-- controlplane/Dockerfile | 4 ++-- graphqlmetrics/Dockerfile | 4 ++-- keycloak/Dockerfile | 6 +++--- otelcollector/Dockerfile | 4 ++-- router/Dockerfile | 6 +++--- studio/Dockerfile | 6 +++--- 8 files changed, 19 insertions(+), 19 deletions(-) diff --git a/admission-server/Dockerfile b/admission-server/Dockerfile index c7dff8c823..d138961e2a 100644 --- a/admission-server/Dockerfile +++ b/admission-server/Dockerfile @@ -1,4 +1,4 @@ -FROM --platform=${BUILDPLATFORM} node:lts AS builder +FROM node:lts AS builder WORKDIR /app @@ -20,7 +20,7 @@ RUN pnpm run --filter=./admission-server build # Deploy RUN pnpm --filter=./admission-server --prod deploy pruned -FROM --platform=${BUILDPLATFORM} node:lts-slim +FROM node:lts-slim WORKDIR /app diff --git a/cdn-server/Dockerfile b/cdn-server/Dockerfile index 920517c88f..90f8b2105f 100644 --- a/cdn-server/Dockerfile +++ b/cdn-server/Dockerfile @@ -1,4 +1,4 @@ -FROM --platform=${BUILDPLATFORM} node:lts AS builder +FROM node:lts AS builder WORKDIR /app @@ -21,7 +21,7 @@ RUN pnpm run --filter=./cdn-server/cdn --filter=./cdn-server build # Deploy RUN pnpm --filter=./cdn-server --prod deploy pruned -FROM --platform=${BUILDPLATFORM} node:lts-slim +FROM node:lts-slim WORKDIR /app diff --git a/controlplane/Dockerfile b/controlplane/Dockerfile index 146e2c3c37..cf1b08b187 100644 --- a/controlplane/Dockerfile +++ b/controlplane/Dockerfile @@ -1,4 +1,4 @@ -FROM --platform=${BUILDPLATFORM} node:lts AS builder +FROM node:lts AS builder ARG TARGETARCH @@ -32,7 +32,7 @@ RUN curl -fsSL -o /usr/local/bin/dbmate https://github.com/amacneil/dbmate/relea # Deploy RUN pnpm --filter=./controlplane --prod deploy pruned -FROM --platform=${BUILDPLATFORM} node:lts-alpine +FROM node:lts-alpine WORKDIR /app diff --git a/graphqlmetrics/Dockerfile b/graphqlmetrics/Dockerfile index 5f89a3a1e1..d7167cae39 100644 --- a/graphqlmetrics/Dockerfile +++ b/graphqlmetrics/Dockerfile @@ -1,4 +1,4 @@ -FROM --platform=${BUILDPLATFORM} golang:1.25 AS builder +FROM golang:1.25 AS builder ARG TARGETOS ARG TARGETARCH @@ -23,7 +23,7 @@ RUN make test # Build router RUN CGO_ENABLED=0 GOOS=${TARGETOS} GOARCH=${TARGETARCH} go build -trimpath -ldflags "-extldflags -static -X github.com/wundergraph/cosmo/graphqlmetrics/core.Version=${VERSION}" -a -o graphqlmetrics cmd/main.go -FROM --platform=${BUILDPLATFORM} gcr.io/distroless/base-debian12 +FROM gcr.io/distroless/base-debian12 COPY --from=builder /app/graphqlmetrics /graphqlmetrics COPY --from=builder /app/migrations /migrations diff --git a/keycloak/Dockerfile b/keycloak/Dockerfile index 935eec6e21..ec67056804 100644 --- a/keycloak/Dockerfile +++ b/keycloak/Dockerfile @@ -1,4 +1,4 @@ -FROM --platform=${BUILDPLATFORM} timbru31/java-node:17-jdk-18 +FROM timbru31/java-node:17-jdk-18 WORKDIR /app @@ -12,7 +12,7 @@ COPY ./theme . RUN ./build.sh -FROM --platform=${BUILDPLATFORM} bitnamilegacy/keycloak:26.2.5 +FROM bitnamilegacy/keycloak:26.2.5 COPY --from=0 /app/target/*.jar /opt/bitnami/keycloak/providers/ @@ -22,4 +22,4 @@ COPY --from=0 /app/target/*.jar /opt/bitnami/keycloak/providers/ RUN /opt/bitnami/keycloak/bin/kc.sh build --db=postgres --metrics-enabled true --health-enabled true --http-relative-path "/" EXPOSE 8080 -EXPOSE 8443 \ No newline at end of file +EXPOSE 8443 diff --git a/otelcollector/Dockerfile b/otelcollector/Dockerfile index 560d99eb4b..6d96531da5 100644 --- a/otelcollector/Dockerfile +++ b/otelcollector/Dockerfile @@ -1,4 +1,4 @@ -FROM --platform=${BUILDPLATFORM} golang:1.25 AS builder +FROM golang:1.25 AS builder ARG TARGETOS ARG TARGETARCH @@ -16,7 +16,7 @@ RUN ./ocb --config otelcol-builder.yaml \ && chmod +x /app/otelcol-dev/otelcol \ && /app/otelcol-dev/otelcol --version -FROM --platform=${BUILDPLATFORM} golang:1.25 +FROM golang:1.25 COPY ./otel-config.yaml /etc/otel-config.yaml COPY --from=builder /app/otelcol-dev/otelcol /otelcol diff --git a/router/Dockerfile b/router/Dockerfile index 50ad4410d2..19a20039e5 100644 --- a/router/Dockerfile +++ b/router/Dockerfile @@ -1,4 +1,4 @@ -FROM --platform=${BUILDPLATFORM} golang:1.25 AS builder +FROM golang:1.25 AS builder ARG TARGETOS ARG TARGETARCH @@ -31,7 +31,7 @@ RUN CGO_ENABLED=0 GOOS=${TARGETOS} GOARCH=${TARGETARCH} \ -X 'github.com/wundergraph/cosmo/router/core.Date=${DATE}'" \ -a -o router cmd/router/main.go -FROM --platform=${BUILDPLATFORM} gcr.io/distroless/base-debian12:nonroot AS nonroot +FROM gcr.io/distroless/base-debian12:nonroot AS nonroot # nonroot user uid USER 65532 @@ -45,7 +45,7 @@ CMD ["/router"] EXPOSE 3002 -FROM --platform=${BUILDPLATFORM} gcr.io/distroless/base-debian12 +FROM gcr.io/distroless/base-debian12 COPY --from=builder /app/router /router diff --git a/studio/Dockerfile b/studio/Dockerfile index 3df71029d4..c8dec34d6b 100644 --- a/studio/Dockerfile +++ b/studio/Dockerfile @@ -1,4 +1,4 @@ -FROM --platform=${BUILDPLATFORM} node:lts AS builder +FROM node:lts AS builder WORKDIR /app @@ -45,7 +45,7 @@ RUN pnpm buf generate --template buf.ts.gen.yaml RUN pnpm run --filter=./connect --filter=./shared --filter=./studio --filter=./composition build -FROM --platform=${BUILDPLATFORM} node:lts-alpine +FROM node:lts-alpine WORKDIR /app @@ -68,4 +68,4 @@ EXPOSE 3000 ENV PORT=3000 ENV HOSTNAME=localhost -CMD ["node", "./studio/server.js"] \ No newline at end of file +CMD ["node", "./studio/server.js"] From b5ef11a76f1ff1b5c840a6560ede87267a60cf1e Mon Sep 17 00:00:00 2001 From: Johnathon Hornby Date: Tue, 7 Oct 2025 09:04:19 -0400 Subject: [PATCH 2/2] fix(infra): maintain build host builder, use target in final stage --- admission-server/Dockerfile | 4 ++-- cdn-server/Dockerfile | 4 ++-- controlplane/Dockerfile | 4 ++-- graphqlmetrics/Dockerfile | 4 ++-- keycloak/Dockerfile | 4 ++-- otelcollector/Dockerfile | 4 ++-- router/Dockerfile | 6 +++--- studio/Dockerfile | 4 ++-- 8 files changed, 17 insertions(+), 17 deletions(-) diff --git a/admission-server/Dockerfile b/admission-server/Dockerfile index d138961e2a..c52a144601 100644 --- a/admission-server/Dockerfile +++ b/admission-server/Dockerfile @@ -1,4 +1,4 @@ -FROM node:lts AS builder +FROM --platform=${BUILDPLATFORM} node:lts AS builder WORKDIR /app @@ -20,7 +20,7 @@ RUN pnpm run --filter=./admission-server build # Deploy RUN pnpm --filter=./admission-server --prod deploy pruned -FROM node:lts-slim +FROM --platform=${TARGETPLATFORM} node:lts-slim WORKDIR /app diff --git a/cdn-server/Dockerfile b/cdn-server/Dockerfile index 90f8b2105f..8c8cb2a012 100644 --- a/cdn-server/Dockerfile +++ b/cdn-server/Dockerfile @@ -1,4 +1,4 @@ -FROM node:lts AS builder +FROM --platform=${BUILDPLATFORM} node:lts AS builder WORKDIR /app @@ -21,7 +21,7 @@ RUN pnpm run --filter=./cdn-server/cdn --filter=./cdn-server build # Deploy RUN pnpm --filter=./cdn-server --prod deploy pruned -FROM node:lts-slim +FROM --platform=${TARGETPLATFORM} node:lts-slim WORKDIR /app diff --git a/controlplane/Dockerfile b/controlplane/Dockerfile index cf1b08b187..ba23c994d7 100644 --- a/controlplane/Dockerfile +++ b/controlplane/Dockerfile @@ -1,4 +1,4 @@ -FROM node:lts AS builder +FROM --platform=${BUILDPLATFORM} node:lts AS builder ARG TARGETARCH @@ -32,7 +32,7 @@ RUN curl -fsSL -o /usr/local/bin/dbmate https://github.com/amacneil/dbmate/relea # Deploy RUN pnpm --filter=./controlplane --prod deploy pruned -FROM node:lts-alpine +FROM --platform=${TARGETPLATFORM} node:lts-alpine WORKDIR /app diff --git a/graphqlmetrics/Dockerfile b/graphqlmetrics/Dockerfile index d7167cae39..a7c0103589 100644 --- a/graphqlmetrics/Dockerfile +++ b/graphqlmetrics/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.25 AS builder +FROM --platform=${BUILDPLATFORM} golang:1.25 AS builder ARG TARGETOS ARG TARGETARCH @@ -23,7 +23,7 @@ RUN make test # Build router RUN CGO_ENABLED=0 GOOS=${TARGETOS} GOARCH=${TARGETARCH} go build -trimpath -ldflags "-extldflags -static -X github.com/wundergraph/cosmo/graphqlmetrics/core.Version=${VERSION}" -a -o graphqlmetrics cmd/main.go -FROM gcr.io/distroless/base-debian12 +FROM --platform=${TARGETPLATFORM} gcr.io/distroless/base-debian12 COPY --from=builder /app/graphqlmetrics /graphqlmetrics COPY --from=builder /app/migrations /migrations diff --git a/keycloak/Dockerfile b/keycloak/Dockerfile index ec67056804..2ecb83bb20 100644 --- a/keycloak/Dockerfile +++ b/keycloak/Dockerfile @@ -1,4 +1,4 @@ -FROM timbru31/java-node:17-jdk-18 +FROM --platform=${BUILDPLATFORM} timbru31/java-node:17-jdk-18 WORKDIR /app @@ -12,7 +12,7 @@ COPY ./theme . RUN ./build.sh -FROM bitnamilegacy/keycloak:26.2.5 +FROM --platform=${TARGETPLATFORM} bitnamilegacy/keycloak:26.2.5 COPY --from=0 /app/target/*.jar /opt/bitnami/keycloak/providers/ diff --git a/otelcollector/Dockerfile b/otelcollector/Dockerfile index 6d96531da5..de9ad0492d 100644 --- a/otelcollector/Dockerfile +++ b/otelcollector/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.25 AS builder +FROM --platform=${BUILDPLATFORM} golang:1.25 AS builder ARG TARGETOS ARG TARGETARCH @@ -16,7 +16,7 @@ RUN ./ocb --config otelcol-builder.yaml \ && chmod +x /app/otelcol-dev/otelcol \ && /app/otelcol-dev/otelcol --version -FROM golang:1.25 +FROM --platform=${TARGETPLATFORM} golang:1.25 COPY ./otel-config.yaml /etc/otel-config.yaml COPY --from=builder /app/otelcol-dev/otelcol /otelcol diff --git a/router/Dockerfile b/router/Dockerfile index 19a20039e5..eda7771cee 100644 --- a/router/Dockerfile +++ b/router/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.25 AS builder +FROM --platform=${BUILDPLATFORM} golang:1.25 AS builder ARG TARGETOS ARG TARGETARCH @@ -31,7 +31,7 @@ RUN CGO_ENABLED=0 GOOS=${TARGETOS} GOARCH=${TARGETARCH} \ -X 'github.com/wundergraph/cosmo/router/core.Date=${DATE}'" \ -a -o router cmd/router/main.go -FROM gcr.io/distroless/base-debian12:nonroot AS nonroot +FROM --platform=${TARGETPLATFORM} gcr.io/distroless/base-debian12:nonroot AS nonroot # nonroot user uid USER 65532 @@ -45,7 +45,7 @@ CMD ["/router"] EXPOSE 3002 -FROM gcr.io/distroless/base-debian12 +FROM --platform=${TARGETPLATFORM} gcr.io/distroless/base-debian12 COPY --from=builder /app/router /router diff --git a/studio/Dockerfile b/studio/Dockerfile index c8dec34d6b..c682e16d5c 100644 --- a/studio/Dockerfile +++ b/studio/Dockerfile @@ -1,4 +1,4 @@ -FROM node:lts AS builder +FROM --platform=${BUILDPLATFORM} node:lts AS builder WORKDIR /app @@ -45,7 +45,7 @@ RUN pnpm buf generate --template buf.ts.gen.yaml RUN pnpm run --filter=./connect --filter=./shared --filter=./studio --filter=./composition build -FROM node:lts-alpine +FROM --platform=${TARGETPLATFORM} node:lts-alpine WORKDIR /app