File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff 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
5555bin_deps = ${BIN_DIR}
5656ifndef NO_DOCKER
8484 ${local_build_cmd_arm64} -o $@ rocketpool/rocketpool.go
8585endif
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/.
108110endif
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
116123docker-push : docker
@@ -135,6 +142,8 @@ docker-latest: docker-push
135142docker-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
140149lint :
@@ -149,3 +158,4 @@ test:
149158.PHONY : clean
150159clean :
151160 rm -rf ${BUILD_DIR}
161+ docker buildx rm smartnode-builder
Original file line number Diff line number Diff line change @@ -14,12 +14,14 @@ target "builder" {
1414 ]
1515 target = " smartnode_dependencies"
1616 platforms = [ " linux/amd64" ]
17+ output = [{ " type" : " docker" }]
1718}
1819
1920target "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}
Original file line number Diff line number Diff line change 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
45RUN 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
2626ARG VERSION
27+ ARG BUILDPLATFORM
28+ ARG TARGETARCH
2729# Create a directory for the output
2830RUN mkdir /build
2931# Build the project by mounting ./ to /src, and go buildcache into the image
You can’t perform that action at this time.
0 commit comments