From 156e84bf20fcb551fa34e1039d59323782e332cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?c=C4=83t=C4=83lin?= Date: Tue, 6 Aug 2024 15:18:09 +0200 Subject: [PATCH] feat: add nextcloud dockerfiles --- docker/nextcloud/Dockerfile | 62 +++++++++++++++++++++++++++++ docker/nextcloud/docker-compose.yml | 31 +++++++++++++++ docker/nextcloud/supervisord.conf | 22 ++++++++++ docker/paperless/docker-compose.yml | 1 - 4 files changed, 115 insertions(+), 1 deletion(-) create mode 100644 docker/nextcloud/Dockerfile create mode 100644 docker/nextcloud/docker-compose.yml create mode 100644 docker/nextcloud/supervisord.conf diff --git a/docker/nextcloud/Dockerfile b/docker/nextcloud/Dockerfile new file mode 100644 index 0000000..3f9a563 --- /dev/null +++ b/docker/nextcloud/Dockerfile @@ -0,0 +1,62 @@ +FROM nextcloud:29.0.4-apache + +RUN set -ex; \ + \ + apt-get update; \ + apt-get install -y --no-install-recommends \ + ffmpeg \ + ghostscript \ + libmagickcore-6.q16-6-extra \ + procps \ + smbclient \ + supervisor \ + vim \ + clamav \ + sudo \ + ; \ + rm -rf /var/lib/apt/lists/* + +RUN set -ex; \ + \ + savedAptMark="$(apt-mark showmanual)"; \ + \ + apt-get update; \ + apt-get install -y --no-install-recommends \ + libbz2-dev \ + libc-client-dev \ + libkrb5-dev \ + libsmbclient-dev \ + ; \ + \ + docker-php-ext-configure imap --with-kerberos --with-imap-ssl; \ + docker-php-ext-install \ + bz2 \ + imap \ + ; \ + pecl install smbclient; \ + docker-php-ext-enable smbclient; \ + \ +# reset apt-mark's "manual" list so that "purge --auto-remove" will remove all build dependencies + apt-mark auto '.*' > /dev/null; \ + apt-mark manual $savedAptMark; \ + ldd "$(php -r 'echo ini_get("extension_dir");')"/*.so \ + | awk '/=>/ { so = $(NF-1); if (index(so, "/usr/local/") == 1) { next }; gsub("^/(usr/)?", "", so); print so }' \ + | sort -u \ + | xargs -r dpkg-query --search \ + | cut -d: -f1 \ + | sort -u \ + | xargs -rt apt-mark manual; \ + \ + apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \ + rm -rf /var/lib/apt/lists/* + +RUN mkdir -p \ + /var/log/supervisord \ + /var/run/supervisord \ +; + +COPY supervisord.conf / + +ENV NEXTCLOUD_UPDATE=1 + +CMD ["/usr/bin/supervisord", "-c", "/supervisord.conf"] diff --git a/docker/nextcloud/docker-compose.yml b/docker/nextcloud/docker-compose.yml new file mode 100644 index 0000000..f135182 --- /dev/null +++ b/docker/nextcloud/docker-compose.yml @@ -0,0 +1,31 @@ +--- +services: + imaginary: + image: nextcloud/aio-imaginary:latest + cap_add: + - SYS_NICE + volumes: + - type: tmpfs + target: /tmp:exec + environment: + - TZ=Europe/Madrid + networks: + - nextcloud + + nextcloud: + build: . + volumes: + - /mnt/nas1/legacy-storage/cloud/cloud/data:/var/www/html/data + - /mnt/nas1/legacy-storage/cloud/cloud/config:/var/www/html/config + - /mnt/nas1/legacy-storage/cloud/cloud/custom_apps:/var/www/html/custom_apps + - /mnt/nas1/legacy-storage/cloud/cloud/apps:/var/www/html/apps + - type: tmpfs + target: /tmp:exec + environment: + PHP_MEMORY_LIMIT: ${PHP_MEMORY_LIMIT:-2048M} + NEXTCLOUD_INIT_HTACCESS: ${NEXTCLOUD_INIT_HTACCESS:-1} + networks: + - nextcloud + +networks: + nextcloud: {} diff --git a/docker/nextcloud/supervisord.conf b/docker/nextcloud/supervisord.conf new file mode 100644 index 0000000..836a08a --- /dev/null +++ b/docker/nextcloud/supervisord.conf @@ -0,0 +1,22 @@ +[supervisord] +nodaemon=true +logfile=/var/log/supervisord/supervisord.log +pidfile=/var/run/supervisord/supervisord.pid +childlogdir=/var/log/supervisord/ +logfile_maxbytes=50MB ; maximum size of logfile before rotation +logfile_backups=10 ; number of backed up logfiles +loglevel=error + +[program:apache2] +stdout_logfile=/dev/stdout +stdout_logfile_maxbytes=0 +stderr_logfile=/dev/stderr +stderr_logfile_maxbytes=0 +command=apache2-foreground + +[program:cron] +stdout_logfile=/dev/stdout +stdout_logfile_maxbytes=0 +stderr_logfile=/dev/stderr +stderr_logfile_maxbytes=0 +command=/cron.sh diff --git a/docker/paperless/docker-compose.yml b/docker/paperless/docker-compose.yml index 0cb0a16..edc97ef 100644 --- a/docker/paperless/docker-compose.yml +++ b/docker/paperless/docker-compose.yml @@ -27,7 +27,6 @@ services: - ${PAPERLESS_MEDIA:-/mnt/nas1/shared/paperless/media}:/usr/src/paperless/media - ${PAPERLESS_EXPORT:-/mnt/nas1/shared/paperless/export}:/usr/src/paperless/export - ${PAPERLESS_CONSUME:-/mnt/nas1/shared/paperless/consume}:/usr/src/paperless/consume - environment: USERMAP_UID: ${PAPERLESS_UID:-1000} USERMAP_GID: ${PAPERLESS_GID:-1000}