Skip to content

Commit 07c757e

Browse files
committed
Fix platform target to build arm image
1 parent 2e85b17 commit 07c757e

3 files changed

Lines changed: 22 additions & 8 deletions

File tree

Makefile

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,8 @@ ${BUILD_DIR}/treegen: ${BIN_DIR}/treegen-${LOCAL_OS}
4949

5050
# docker-builder container
5151
.PHONY: docker-builder
52-
docker-builder:
53-
VERSION=${VERSION} docker bake -f docker/daemon-bake.hcl builder
52+
docker-builder: ${BUILD_DIR}/docker-buildx-builder
53+
VERSION=${VERSION} docker bake --builder smartnode-builder -f docker/daemon-bake.hcl builder
5454

5555
bin_deps = ${BIN_DIR}
5656
ifndef NO_DOCKER
@@ -84,6 +84,8 @@ else
8484
${local_build_cmd_arm64} -o $@ rocketpool/rocketpool.go
8585
endif
8686

87+
${BUILD_DIR}:
88+
mkdir -p ${BUILD_DIR}
8789
${BIN_DIR}:
8890
mkdir -p ${BIN_DIR}
8991

@@ -107,10 +109,15 @@ else
107109
${local_build_cmd_arm64} -o $@ ./treegen/.
108110
endif
109111

112+
# Multiarch builder
113+
${BUILD_DIR}/docker-buildx-builder: ${BUILD_DIR}
114+
docker buildx create --name smartnode-builder --driver docker-container --platform linux/amd64,linux/arm64
115+
touch ${BUILD_DIR}/docker-buildx-builder
116+
110117
# Docker containers
111118
.PHONY: docker
112-
docker:
113-
VERSION=${VERSION} docker bake -f docker/daemon-bake.hcl smartnode
119+
docker: ${BUILD_DIR}/docker-buildx-builder
120+
VERSION=${VERSION} docker bake --builder smartnode-builder -f docker/daemon-bake.hcl smartnode
114121

115122
.PHONY: docker-push
116123
docker-push: docker
@@ -135,6 +142,8 @@ docker-latest: docker-push
135142
docker-prune:
136143
docker system prune -af
137144
docker buildx prune -af
145+
docker buildx rm smartnode-builder
146+
rm ${BUILD_DIR}/docker-buildx-builder
138147

139148
.PHONY: lint
140149
lint:
@@ -149,3 +158,4 @@ test:
149158
.PHONY: clean
150159
clean:
151160
rm -rf ${BUILD_DIR}
161+
docker buildx rm smartnode-builder

docker/daemon-bake.hcl

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,14 @@ target "builder" {
1414
]
1515
target = "smartnode_dependencies"
1616
platforms = [ "linux/amd64" ]
17+
output = [{ "type": "docker" }]
1718
}
1819

1920
target "smartnode" {
2021
name = "smartnode-${arch}"
2122
dockerfile = "docker/rocketpool-dockerfile"
2223
args = {
24+
BUILDPLATFORM = "linux/amd64"
2325
VERSION = "${VERSION}"
2426
}
2527
tags = [
@@ -30,6 +32,6 @@ target "smartnode" {
3032
arch = [ "amd64", "arm64" ]
3133
}
3234
target = "smartnode"
33-
platform = "linux/${arch}"
35+
platforms = ["linux/${arch}"]
3436
output = [{ "type": "docker" }]
3537
}

docker/rocketpool-dockerfile

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
FROM golang:1.21.8-bookworm AS smartnode_dependencies
1+
FROM --platform=$BUILDPLATFORM golang:1.21.8-bookworm AS smartnode_dependencies
2+
ARG BUILDPLATFORM
23

34
# Install build tools
45
RUN dpkg --add-architecture arm64
@@ -21,9 +22,10 @@ RUN --mount=type=cache,target=/gopkgmodcache \
2122
GOMODCACHE=/gopkgmodcache go mod download -x && \
2223
cp -r /gopkgmodcache /go/pkg/mod
2324

24-
FROM smartnode_dependencies AS build
25-
ARG TARGETARCH
25+
FROM --platform=$BUILDPLATFORM smartnode_dependencies AS build
2626
ARG VERSION
27+
ARG BUILDPLATFORM
28+
ARG TARGETARCH
2729
# Create a directory for the output
2830
RUN mkdir /build
2931
# Build the project by mounting ./ to /src, and go buildcache into the image

0 commit comments

Comments
 (0)