Skip to content

Commit 6085c64

Browse files
authored
Merge pull request #586 from nginx-proxy/cross-compile
build: switch to go cross compilation
2 parents 1e8cc8c + de97998 commit 6085c64

File tree

2 files changed

+32
-11
lines changed

2 files changed

+32
-11
lines changed

Dockerfile.alpine

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,30 @@
11
ARG DOCKER_GEN_VERSION=main
22

33
# Build docker-gen from scratch
4-
FROM golang:1.20.12-alpine as go-builder
4+
FROM --platform=$BUILDPLATFORM golang:1.20.12-alpine as go-builder
5+
6+
ENV CGO_ENABLED=0
7+
8+
ARG DOCKER_GEN_VERSION TARGETOS TARGETARCH TARGETVARIANT
9+
ENV GOOS=$TARGETOS GOARCH=$TARGETARCH VARIANT=$TARGETVARIANT
510

6-
ARG DOCKER_GEN_VERSION
711
WORKDIR /build
812

913
# Install the dependencies
1014
COPY . .
1115
RUN go mod download
1216

1317
# Build the docker-gen executable
14-
RUN GOOS=linux CGO_ENABLED=0 go build -ldflags "-X main.buildVersion=${DOCKER_GEN_VERSION}" -o docker-gen ./cmd/docker-gen
15-
16-
FROM alpine:3.19.0
18+
RUN set -eux; \
19+
case "$GOARCH" in \
20+
arm) export GOARM="${VARIANT#v}" ;; \
21+
amd64) export GOAMD64="$VARIANT" ;; \
22+
*) [ -z "$VARIANT" ] ;; \
23+
esac; \
24+
go env | grep -E 'OS=|ARCH=|ARM=|AMD64='; \
25+
go build -ldflags "-X main.buildVersion=${DOCKER_GEN_VERSION}" -o docker-gen ./cmd/docker-gen
26+
27+
FROM --platform=$TARGETPLATFORM alpine:3.19.0
1728

1829
ARG DOCKER_GEN_VERSION
1930
ENV DOCKER_GEN_VERSION=${DOCKER_GEN_VERSION} \

Dockerfile.debian

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
ARG DOCKER_GEN_VERSION=main
22

33
# Build docker-gen from scratch
4-
FROM golang:1.20.12 as go-builder
4+
FROM --platform=$BUILDPLATFORM golang:1.20.12 as go-builder
55

6-
ARG DOCKER_GEN_VERSION
6+
ENV CGO_ENABLED=0
7+
8+
ARG DOCKER_GEN_VERSION TARGETOS TARGETARCH TARGETVARIANT
9+
ENV GOOS=$TARGETOS GOARCH=$TARGETARCH VARIANT=$TARGETVARIANT
710

811
WORKDIR /build
912

@@ -12,12 +15,19 @@ COPY . .
1215
RUN go mod download
1316

1417
# Build the docker-gen executable
15-
RUN GOOS=linux CGO_ENABLED=0 go build -ldflags "-X main.buildVersion=${DOCKER_GEN_VERSION}" -o docker-gen ./cmd/docker-gen
18+
RUN set -eux; \
19+
case "$GOARCH" in \
20+
arm) export GOARM="${VARIANT#v}" ;; \
21+
amd64) export GOAMD64="$VARIANT" ;; \
22+
*) [ -z "$VARIANT" ] ;; \
23+
esac; \
24+
go env | grep -E 'OS=|ARCH=|ARM=|AMD64='; \
25+
go build -ldflags "-X main.buildVersion=${DOCKER_GEN_VERSION}" -o docker-gen ./cmd/docker-gen
1626

17-
FROM debian:12.4-slim
27+
FROM --platform=$TARGETPLATFORM debian:12.4-slim
1828

19-
ARG VERSION
20-
ENV DOCKER_GEN_VERSION=${VERSION} \
29+
ARG DOCKER_GEN_VERSION
30+
ENV DOCKER_GEN_VERSION=${DOCKER_GEN_VERSION} \
2131
DOCKER_HOST=unix:///tmp/docker.sock
2232

2333
# Install packages required by the image

0 commit comments

Comments
 (0)