Skip to content

Commit 0fb4bb5

Browse files
authored
Multiarch Docker images (#337)
1 parent 5d18a2f commit 0fb4bb5

File tree

2 files changed

+49
-0
lines changed

2 files changed

+49
-0
lines changed

Dockerfile.ma

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
ARG IMAGE=alpine:3.16
2+
FROM ${IMAGE}
3+
MAINTAINER Max Neunhoeffer <max@arangodb.com>
4+
5+
ARG TARGETARCH
6+
COPY bin/linux/${TARGETARCH}/arangodb /app/
7+
8+
EXPOSE 8528
9+
10+
VOLUME /data
11+
12+
# Data directory
13+
ENV DATA_DIR=/data
14+
15+
# Signal running in docker
16+
ENV RUNNING_IN_DOCKER=true
17+
18+
# Docker image containing arangod.
19+
ENV DOCKER_IMAGE=arangodb/arangodb:latest
20+
21+
ENTRYPOINT ["/app/arangodb"]
22+
23+
RUN /app/arangodb version

Makefile

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,18 @@ VERSION_MAJOR := $(shell echo $(VERSION_MAJOR_MINOR) | cut -f 1 -d '.')
1010
COMMIT := $(shell git rev-parse --short HEAD)
1111
MAKEFILE := $(ROOTDIR)/Makefile
1212

13+
ifndef MULTIARCH
14+
MULTIARCH:=1
15+
endif
16+
1317
ALPINE_IMAGE ?= alpine:3.11
1418

1519
DOCKERCLI ?= $(shell which docker)
1620
GOBUILDLINKTARGET := ../../../..
1721

22+
DOCKERMACLI := $(DOCKERCLI) buildx build -f "$(ROOTDIR)/Dockerfile.ma" --build-arg "IMAGE=$(ALPINE_IMAGE)" \
23+
--platform linux/amd64,linux/arm64
24+
1825
BUILDDIR ?= $(ROOTDIR)
1926

2027
GOBUILDDIR := $(BUILDDIR)/.gobuild
@@ -163,15 +170,27 @@ $(TESTBIN): $(GOBUILDDIR) $(TEST_SOURCES) $(BIN)
163170
@mkdir -p $(BINDIR)
164171
$(DOCKER_CMD) go test -c -o "$(TEST_BIN)" ./test
165172

173+
ifndef MULTIARCH
166174
docker: build
167175
$(DOCKERCLI) build -t arangodb/arangodb-starter --build-arg "IMAGE=$(ALPINE_IMAGE)" .
176+
else
177+
docker: binaries
178+
$(DOCKERCLI) buildx build -f "$(ROOTDIR)/Dockerfile.ma" --build-arg "IMAGE=$(ALPINE_IMAGE)" \
179+
--platform linux/amd64,linux/arm64 -t arangodb/arangodb-starter .
180+
endif
168181

182+
ifndef MULTIARCH
169183
docker-push: docker
170184
ifneq ($(DOCKERNAMESPACE), arangodb)
171185
docker tag arangodb/arangodb-starter $(DOCKERNAMESPACE)/arangodb-starter
172186
endif
173187
docker push $(DOCKERNAMESPACE)/arangodb-starter
188+
else
189+
docker-push: docker
190+
$(DOCKERMACLI) --push -t $(DOCKERNAMESPACE)/arangodb-starter .
191+
endif
174192

193+
ifndef MULTIARCH
175194
docker-push-version: docker
176195
docker tag arangodb/arangodb-starter arangodb/arangodb-starter:$(VERSION)
177196
docker tag arangodb/arangodb-starter arangodb/arangodb-starter:$(VERSION_MAJOR_MINOR)
@@ -181,6 +200,13 @@ docker-push-version: docker
181200
docker push arangodb/arangodb-starter:$(VERSION_MAJOR_MINOR)
182201
docker push arangodb/arangodb-starter:$(VERSION_MAJOR)
183202
docker push arangodb/arangodb-starter:latest
203+
else
204+
docker-push-version: docker
205+
$(DOCKERMACLI) --push -t arangodb/arangodb-starter:$(VERSION)
206+
$(DOCKERMACLI) --push -t arangodb/arangodb-starter:$(VERSION_MAJOR_MINOR)
207+
$(DOCKERMACLI) --push -t arangodb/arangodb-starter:$(VERSION_MAJOR)
208+
$(DOCKERMACLI) --push -t arangodb/arangodb-starter:latest
209+
endif
184210

185211
$(RELEASE): $(GOBUILDDIR) $(GO_SOURCES)
186212
$(DOCKER_CMD) go build -o "$(RELEASE_BIN)" $(REPOPATH)/tools/release

0 commit comments

Comments
 (0)