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 . +