From 712ce06a5834c8fda60c2eb91099fed361cf49cb Mon Sep 17 00:00:00 2001 From: Christian Richter Date: Fri, 21 Feb 2025 15:44:46 +0100 Subject: [PATCH] experimental multi-arch build Signed-off-by: Christian Richter --- opencloud/Makefile | 9 +++ opencloud/docker/Dockerfile.linux.multiarch | 62 +++++++++++++++++++++ 2 files changed, 71 insertions(+) create mode 100644 opencloud/docker/Dockerfile.linux.multiarch diff --git a/opencloud/Makefile b/opencloud/Makefile index 3e40e7ade1..523ea45b35 100644 --- a/opencloud/Makefile +++ b/opencloud/Makefile @@ -35,6 +35,15 @@ dev-docker: $(MAKE) --no-print-directory release-linux-docker-$(GOARCH) docker build -f docker/Dockerfile.linux.$(GOARCH) -t opencloud-eu/opencloud:dev . +########### multiarch-docker ########### +.PHONY: dev-docker-multiarch +dev-docker-multiarch: + docker buildx rm opencloudbuilder || true + docker buildx create --platform linux/arm64,linux/amd64 --name opencloudbuilder + docker buildx use opencloudbuilder + cd .. && docker buildx build --platform linux/arm64,linux/amd64 --output type=docker --file opencloud/docker/Dockerfile.linux.multiarch --tag opencloud-eu/opencloud:dev-multiarch . + docker buildx rm opencloudbuilder + ############ debug-docker ############ .PHONY: debug-docker debug-docker: diff --git a/opencloud/docker/Dockerfile.linux.multiarch b/opencloud/docker/Dockerfile.linux.multiarch new file mode 100644 index 0000000000..4e6ba650b7 --- /dev/null +++ b/opencloud/docker/Dockerfile.linux.multiarch @@ -0,0 +1,62 @@ +FROM owncloudci/nodejs:18 AS generate +ARG TARGETARCH + +COPY ./ /opencloud/ + +WORKDIR /opencloud/opencloud +ARG TARGETARCH + +RUN make ci-node-generate + +FROM golang:alpine3.20 AS build +ARG TARGETARCH + +RUN apk add bash make git curl gcc musl-dev libc-dev binutils-gold inotify-tools vips-dev + +COPY --from=generate /opencloud /opencloud + +WORKDIR /opencloud/opencloud +RUN GOOS=linux GOARCH="${TARGETARCH}" make ci-go-generate build ENABLE_VIPS=true + +FROM alpine:3.20 +ARG TARGETARCH + +ARG VERSION="" +ARG REVISION="" + +RUN apk add --no-cache attr bash ca-certificates curl inotify-tools libc6-compat mailcap tree vips patch && \ + echo 'hosts: files dns' >| /etc/nsswitch.conf + +LABEL maintainer="openCloud GmbH " \ + org.opencontainers.image.title="OpenCloud" \ + org.opencontainers.image.vendor="OpenCloud GmbH" \ + org.opencontainers.image.authors="OpenCloud GmbH" \ + org.opencontainers.image.description="OpenCloud is a modern file-sync and share platform" \ + org.opencontainers.image.licenses="Apache-2.0" \ + org.opencontainers.image.documentation="https://github.com/opencloud-eu/opencloud" \ + org.opencontainers.image.url="https://hub.docker.com/r/opencloud-eu/opencloud" \ + org.opencontainers.image.source="https://github.com/opencloud-eu/opencloud" \ + org.opencontainers.image.version="${VERSION}" \ + org.opencontainers.image.revision="${REVISION}" + +RUN addgroup -g 1000 -S opencloud-group && \ + adduser -S --ingroup opencloud-group --uid 1000 opencloud-user --home /var/lib/opencloud + +RUN mkdir -p /var/lib/opencloud && \ + chown -R opencloud-user:opencloud-group /var/lib/opencloud && \ + chmod -R 751 /var/lib/opencloud && \ + mkdir -p /etc/opencloud && \ + chown -R opencloud-user:opencloud-group /etc/opencloud && \ + chmod -R 751 /etc/opencloud + +VOLUME [ "/var/lib/opencloud", "/etc/opencloud" ] +WORKDIR /var/lib/opencloud + +USER 1000 + +EXPOSE 9200/tcp + +ENTRYPOINT ["/usr/bin/opencloud"] +CMD ["server"] + +COPY --from=build /opencloud/opencloud/bin/opencloud /usr/bin/opencloud