diff --git a/.dockerignore b/.dockerignore index 278387a96c..d8857edf91 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,6 +1,8 @@ .bingo !.bingo/*.mod !.bingo/Variables.mk +.git **/bin -docs **/node_modules +**/tmp +docs diff --git a/opencloud/Makefile b/opencloud/Makefile index 4e147953b4..2997791c23 100644 --- a/opencloud/Makefile +++ b/opencloud/Makefile @@ -17,8 +17,7 @@ include ../.make/docs.mk .PHONY: dev-docker dev-docker: - $(MAKE) --no-print-directory release-linux-docker-$(GOARCH) - docker build -f docker/Dockerfile.linux.$(GOARCH) -t opencloudeu/opencloud:dev . + docker build -f docker/Dockerfile.multiarch -t opencloudeu/opencloud:dev .. .PHONY: dev-docker-multiarch dev-docker-multiarch: diff --git a/opencloud/docker/Dockerfile.linux.amd64 b/opencloud/docker/Dockerfile.linux.amd64 deleted file mode 100644 index c6c19dffd1..0000000000 --- a/opencloud/docker/Dockerfile.linux.amd64 +++ /dev/null @@ -1,43 +0,0 @@ -FROM amd64/alpine:3.21 - -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 && \ -# Pre-create the web directory to avoid permission issues - mkdir -p /var/lib/opencloud/web/assets/apps && \ - 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 dist/binaries/opencloud-linux-amd64 /usr/bin/opencloud diff --git a/opencloud/docker/Dockerfile.linux.arm64 b/opencloud/docker/Dockerfile.linux.arm64 deleted file mode 100644 index 0629f232fd..0000000000 --- a/opencloud/docker/Dockerfile.linux.arm64 +++ /dev/null @@ -1,43 +0,0 @@ -FROM arm64v8/alpine:3.21 - -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 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 && \ -# Pre-create the web directory to avoid permission issues - mkdir -p /var/lib/opencloud/web/assets/apps && \ - 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 dist/binaries/opencloud-linux-arm64 /usr/bin/opencloud diff --git a/opencloud/docker/Dockerfile.multiarch b/opencloud/docker/Dockerfile.multiarch index 6fe90263f1..89d4ae43de 100644 --- a/opencloud/docker/Dockerfile.multiarch +++ b/opencloud/docker/Dockerfile.multiarch @@ -6,13 +6,14 @@ ARG STRING RUN apk add bash make git curl gcc musl-dev libc-dev binutils-gold inotify-tools vips-dev -COPY ../ /opencloud/ - WORKDIR /opencloud -RUN GOOS="${TARGETOS:-linux}" GOARCH="${TARGETARCH:-amd64}" ; \ - make -C opencloud release-linux-docker-${TARGETARCH} ENABLE_VIPS=true +RUN --mount=type=bind,target=/opencloud \ + --mount=type=cache,target=/go/pkg/mod \ + --mount=type=cache,target=/root/.cache \ + GOOS="${TARGETOS:-linux}" GOARCH="${TARGETARCH:-amd64}" ; \ + make -C opencloud release-linux-docker-${TARGETARCH} ENABLE_VIPS=true DIST=/dist -FROM alpine:3.20 +FROM alpine:3.21 ARG VERSION ARG REVISION ARG TARGETOS @@ -55,4 +56,4 @@ EXPOSE 9200/tcp ENTRYPOINT ["/usr/bin/opencloud"] CMD ["server"] -COPY --from=build /opencloud/opencloud/dist/binaries/opencloud-linux-${TARGETARCH} /usr/bin/opencloud +COPY --from=build /dist/binaries/opencloud-linux-${TARGETARCH} /usr/bin/opencloud