From c82acab5d9e01ef00dbb96c281c14dd36e998d53 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Miguel=20=C3=81ngel=20Ortu=C3=B1o?=
Date: Fri, 4 Mar 2022 12:53:15 +0100
Subject: [PATCH] added multiarch docker build (#215)
---
Makefile | 6 +++---
dockerfiles/Dockerfile | 8 +++++---
scripts/dockerimage.sh | 17 ++++++++++++-----
3 files changed, 20 insertions(+), 11 deletions(-)
diff --git a/Makefile b/Makefile
index 037a0ce62..b3b73f656 100644
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,4 @@
-.PHONY: check fmt vet lint generate test proto build install installctl dockerimage
+.PHONY: check fmt vet lint generate test proto build install installctl push-dockerimage
generate:
@echo "Generating mock files..."
@@ -38,6 +38,6 @@ installctl:
@echo "Installing jackalctl binary..."
@bash scripts/installctl.sh
-dockerimage:
- @echo "Building docker image..."
+push-dockerimage:
+ @echo "Pushing docker image..."
@bash scripts/dockerimage.sh
diff --git a/dockerfiles/Dockerfile b/dockerfiles/Dockerfile
index 792a9cb0c..20a05a193 100644
--- a/dockerfiles/Dockerfile
+++ b/dockerfiles/Dockerfile
@@ -1,4 +1,6 @@
-FROM debian:stable-slim
+FROM --platform=$BUILDPLATFORM debian:stable-slim
+
+ARG TARGETARCH
WORKDIR /jackal
@@ -7,8 +9,8 @@ LABEL org.label-schema.name="jackal"
LABEL org.label-schema.vendor="Miguel Ãngel Ortuño"
LABEL maintainer="Miguel Ãngel Ortuño "
-ADD build/jackal /jackal
-ADD build/jackalctl /jackal
+ADD build/$TARGETARCH/jackal /jackal
+ADD build/$TARGETARCH/jackalctl /jackal
EXPOSE 5222
diff --git a/scripts/dockerimage.sh b/scripts/dockerimage.sh
index 2dfe6f4f6..fe65fd500 100644
--- a/scripts/dockerimage.sh
+++ b/scripts/dockerimage.sh
@@ -7,8 +7,15 @@ command -v docker >/dev/null 2>&1 || { echo 'Please install docker or use image
rm -rf build/
mkdir build
-CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -tags netgo \
- -ldflags "-s -w" -o "build/jackal" "github.com/ortuman/jackal/cmd/jackal"
-CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -tags netgo \
- -ldflags "-s -w" -o "build/jackalctl" "github.com/ortuman/jackal/cmd/jackalctl"
-docker build -f dockerfiles/Dockerfile -t ortuman/jackal .
+for arch in amd64 arm64
+do
+ CGO_ENABLED=0 GOOS=linux GOARCH=${arch} go build -a -tags netgo \
+ -ldflags "-s -w" -o "build/${arch}/jackal" "github.com/ortuman/jackal/cmd/jackal"
+ CGO_ENABLED=0 GOOS=linux GOARCH=${arch} go build -a -tags netgo \
+ -ldflags "-s -w" -o "build/${arch}/jackalctl" "github.com/ortuman/jackal/cmd/jackalctl"
+
+ docker buildx build --platform linux/${arch} -f dockerfiles/Dockerfile .
+done
+
+docker buildx build --platform linux/amd64,linux/arm64 -t ortuman/jackal -o type=registry -f dockerfiles/Dockerfile .
+