mirror of
https://github.com/nextcloud/docker.git
synced 2025-07-17 21:28:05 +02:00
Compare commits
18 commits
62324d3b5c
...
dfaf1c90b3
Author | SHA1 | Date | |
---|---|---|---|
|
dfaf1c90b3 | ||
|
614be28550 | ||
|
645f515e29 | ||
|
1bfb7357af | ||
|
49e139cc2c | ||
|
547a09d611 | ||
|
3aed7a1705 | ||
|
bb0354f587 | ||
|
a19d68f081 | ||
|
f130178136 | ||
|
f3e0c49c38 | ||
|
b36cfa65da | ||
|
6e8f484c4b | ||
|
43311addf2 | ||
|
558ff494d3 | ||
|
7832770350 | ||
|
a2995dde03 | ||
|
88ef913597 |
45 changed files with 573 additions and 444 deletions
|
@ -4,6 +4,15 @@ if (getenv('OBJECTSTORE_S3_BUCKET')) {
|
|||
$use_path = getenv('OBJECTSTORE_S3_USEPATH_STYLE');
|
||||
$use_legacyauth = getenv('OBJECTSTORE_S3_LEGACYAUTH');
|
||||
$autocreate = getenv('OBJECTSTORE_S3_AUTOCREATE');
|
||||
$proxy = getenv('OBJECTSTORE_S3_PROXY');
|
||||
$verify_bucket_exists = getenv('OBJECTSTORE_S3_VERIFY_BUCKET_EXISTS');
|
||||
$use_multipart_copy = getenv('OBJECTSTORE_S3_USEMULTIPARTCOPY');
|
||||
$concurrency = getenv('OBJECTSTORE_S3_CONCURRENCY');
|
||||
$timeout = getenv('OBJECTSTORE_S3_TIMEOUT');
|
||||
$upload_part_size = getenv('OBJECTSTORE_S3_UPLOADPARTSIZE');
|
||||
$put_size_limit = getenv('OBJECTSTORE_S3_PUTSIZELIMIT');
|
||||
$copy_size_limit = getenv('OBJECTSTORE_S3_COPYSIZELIMIT');
|
||||
|
||||
$CONFIG = array(
|
||||
'objectstore' => array(
|
||||
'class' => '\OC\Files\ObjectStore\S3',
|
||||
|
@ -19,11 +28,35 @@ if (getenv('OBJECTSTORE_S3_BUCKET')) {
|
|||
// required for some non Amazon S3 implementations
|
||||
'use_path_style' => $use_path == true && strtolower($use_path) !== 'false',
|
||||
// required for older protocol versions
|
||||
'legacy_auth' => $use_legacyauth == true && strtolower($use_legacyauth) !== 'false'
|
||||
'useMultipartCopy' => strtolower($useMultipartCopy) !== 'true',
|
||||
'legacy_auth' => $use_legacyauth == true && strtolower($use_legacyauth) !== 'false',
|
||||
'proxy' => strtolower($proxy) !== 'false',
|
||||
'version' => getenv('OBJECTSTORE_S3_VERSION') ?: 'latest',
|
||||
'verify_bucket_exists' => strtolower($verify_bucket_exists) !== 'true'
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
if $concurrency {
|
||||
$CONFIG['objectstore']['arguments']['concurrency'] = $concurrency;
|
||||
}
|
||||
|
||||
if $timeout {
|
||||
$CONFIG['objectstore']['arguments']['timeout'] = $timeout;
|
||||
}
|
||||
|
||||
if $upload_part_size {
|
||||
$CONFIG['objectstore']['arguments']['uploadPartSize'] = $upload_part_size;
|
||||
}
|
||||
|
||||
if $put_size_limit {
|
||||
$CONFIG['objectstore']['arguments']['putSizeLimit'] = $put_size_limit;
|
||||
}
|
||||
|
||||
if $copy_size_limit {
|
||||
$CONFIG['objectstore']['arguments']['copySizeLimit'] = $copy_size_limit;
|
||||
}
|
||||
|
||||
if (getenv('OBJECTSTORE_S3_KEY_FILE')) {
|
||||
$CONFIG['objectstore']['arguments']['key'] = trim(file_get_contents(getenv('OBJECTSTORE_S3_KEY_FILE')));
|
||||
} elseif (getenv('OBJECTSTORE_S3_KEY')) {
|
||||
|
|
|
@ -1,6 +1,9 @@
|
|||
services:
|
||||
# Note: MariaDB is an external service. You can find more information about the configuration here:
|
||||
# https://hub.docker.com/_/mariadb
|
||||
db:
|
||||
image: mariadb:10.11
|
||||
# Note: Check the recommend version here: https://docs.nextcloud.com/server/latest/admin_manual/installation/system_requirements.html#server
|
||||
image: mariadb:lts
|
||||
command: --transaction-isolation=READ-COMMITTED
|
||||
restart: always
|
||||
volumes:
|
||||
|
@ -12,6 +15,8 @@ services:
|
|||
env_file:
|
||||
- db.env
|
||||
|
||||
# Note: Redis is an external service. You can find more information about the configuration here:
|
||||
# https://hub.docker.com/_/redis
|
||||
redis:
|
||||
image: redis:alpine
|
||||
restart: always
|
||||
|
|
|
@ -1,6 +1,9 @@
|
|||
services:
|
||||
# Note: MariaDB is an external service. You can find more information about the configuration here:
|
||||
# https://hub.docker.com/_/mariadb
|
||||
db:
|
||||
image: mariadb:10.11
|
||||
# Note: Check the recommend version here: https://docs.nextcloud.com/server/latest/admin_manual/installation/system_requirements.html#server
|
||||
image: mariadb:lts
|
||||
command: --transaction-isolation=READ-COMMITTED
|
||||
restart: always
|
||||
volumes:
|
||||
|
@ -12,6 +15,8 @@ services:
|
|||
env_file:
|
||||
- db.env
|
||||
|
||||
# Note: Redis is an external service. You can find more information about the configuration here:
|
||||
# https://hub.docker.com/_/redis
|
||||
redis:
|
||||
image: redis:alpine
|
||||
restart: always
|
||||
|
@ -31,14 +36,18 @@ services:
|
|||
- db
|
||||
- redis
|
||||
|
||||
# Note: Nginx is an external service. You can find more information about the configuration here:
|
||||
# https://hub.docker.com/_/nginx/
|
||||
web:
|
||||
build: ./web
|
||||
image: nginx:alpine-slim
|
||||
restart: always
|
||||
ports:
|
||||
- 127.0.0.1:8080:80
|
||||
volumes:
|
||||
# https://docs.nextcloud.com/server/latest/admin_manual/installation/nginx.html
|
||||
- ./web/nginx.conf:/etc/nginx/nginx.conf:ro
|
||||
# NOTE: The `volumes` included below should match those of the `app` container (unless you know what you're doing)
|
||||
- nextcloud:/var/www/html:z,ro
|
||||
# NOTE: The `volumes` included here should match those of the `app` container (unless you know what you're doing)
|
||||
depends_on:
|
||||
- app
|
||||
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
FROM nginx:alpine
|
||||
|
||||
COPY nginx.conf /etc/nginx/nginx.conf
|
|
@ -1,5 +1,8 @@
|
|||
services:
|
||||
# Note: PostgreSQL is an external service. You can find more information about the configuration here:
|
||||
# https://hub.docker.com/_/postgres
|
||||
db:
|
||||
# Note: Check the recommend version here: https://docs.nextcloud.com/server/latest/admin_manual/installation/system_requirements.html#server
|
||||
image: postgres:alpine
|
||||
restart: always
|
||||
volumes:
|
||||
|
@ -7,6 +10,8 @@ services:
|
|||
env_file:
|
||||
- db.env
|
||||
|
||||
# Note: Redis is an external service. You can find more information about the configuration here:
|
||||
# https://hub.docker.com/_/redis
|
||||
redis:
|
||||
image: redis:alpine
|
||||
restart: always
|
||||
|
|
|
@ -1,5 +1,8 @@
|
|||
services:
|
||||
# Note: PostgreSQL is an external service. You can find more information about the configuration here:
|
||||
# https://hub.docker.com/_/postgres
|
||||
db:
|
||||
# Note: Check the recommend version here: https://docs.nextcloud.com/server/latest/admin_manual/installation/system_requirements.html#server
|
||||
image: postgres:alpine
|
||||
restart: always
|
||||
volumes:
|
||||
|
@ -7,6 +10,8 @@ services:
|
|||
env_file:
|
||||
- db.env
|
||||
|
||||
# Note: Redis is an external service. You can find more information about the configuration here:
|
||||
# https://hub.docker.com/_/redis
|
||||
redis:
|
||||
image: redis:alpine
|
||||
restart: always
|
||||
|
@ -26,14 +31,18 @@ services:
|
|||
- db
|
||||
- redis
|
||||
|
||||
# Note: Nginx is an external service. You can find more information about the configuration here:
|
||||
# https://hub.docker.com/_/nginx/
|
||||
web:
|
||||
build: ./web
|
||||
image: nginx:alpine-slim
|
||||
restart: always
|
||||
ports:
|
||||
- 127.0.0.1:8080:80
|
||||
volumes:
|
||||
# https://docs.nextcloud.com/server/latest/admin_manual/installation/nginx.html
|
||||
- ./web/nginx.conf:/etc/nginx/nginx.conf:ro
|
||||
# NOTE: The `volumes` included below should match those of the `app` container (unless you know what you're doing)
|
||||
- nextcloud:/var/www/html:z,ro
|
||||
# NOTE: The `volumes` included here should match those of the `app` container (unless you know what you're doing)
|
||||
depends_on:
|
||||
- app
|
||||
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
FROM nginx:alpine
|
||||
|
||||
COPY nginx.conf /etc/nginx/nginx.conf
|
|
@ -1,6 +1,9 @@
|
|||
services:
|
||||
# Note: MariaDB is an external service. You can find more information about the configuration here:
|
||||
# https://hub.docker.com/_/mariadb
|
||||
db:
|
||||
image: mariadb:10.11
|
||||
# Note: Check the recommend version here: https://docs.nextcloud.com/server/latest/admin_manual/installation/system_requirements.html#server
|
||||
image: mariadb:lts
|
||||
command: --transaction-isolation=READ-COMMITTED
|
||||
restart: always
|
||||
volumes:
|
||||
|
@ -12,6 +15,8 @@ services:
|
|||
env_file:
|
||||
- db.env
|
||||
|
||||
# Note: Redis is an external service. You can find more information about the configuration here:
|
||||
# https://hub.docker.com/_/redis
|
||||
redis:
|
||||
image: redis:alpine
|
||||
restart: always
|
||||
|
@ -33,9 +38,6 @@ services:
|
|||
depends_on:
|
||||
- db
|
||||
- redis
|
||||
# Added proxy container dependency below.
|
||||
# It is unclear on when or why it happens, but sometimes NC manages to start before the proxy
|
||||
# and it breaks for whatever weird reason resulting in the need of manual proxy container restart.
|
||||
- proxy
|
||||
networks:
|
||||
- proxy-tier
|
||||
|
@ -52,6 +54,9 @@ services:
|
|||
- db
|
||||
- redis
|
||||
|
||||
# Note: Nginx-proxy is an external service. You can find more information about the configuration here:
|
||||
# Warning: Do not use :latest tags of nginx-proxy unless absolutely sure about the consequences.
|
||||
# https://hub.docker.com/r/nginxproxy/nginx-proxy
|
||||
proxy:
|
||||
build: ./proxy
|
||||
restart: always
|
||||
|
@ -69,6 +74,8 @@ services:
|
|||
networks:
|
||||
- proxy-tier
|
||||
|
||||
# Note: Letsencrypt companion is an external service. You can find more information about the configuration here:
|
||||
# https://hub.docker.com/r/nginxproxy/acme-companion
|
||||
letsencrypt-companion:
|
||||
image: nginxproxy/acme-companion
|
||||
restart: always
|
||||
|
@ -85,7 +92,7 @@ services:
|
|||
depends_on:
|
||||
- proxy
|
||||
|
||||
# self signed
|
||||
# self signed,outdated
|
||||
# omgwtfssl:
|
||||
# image: paulczar/omgwtfssl
|
||||
# restart: "no"
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
FROM nginxproxy/nginx-proxy:alpine
|
||||
FROM nginxproxy/nginx-proxy:1.7-alpine
|
||||
|
||||
COPY uploadsize.conf /etc/nginx/conf.d/uploadsize.conf
|
||||
|
|
|
@ -1,6 +1,9 @@
|
|||
services:
|
||||
# Note: MariaDB is an external service. You can find more information about the configuration here:
|
||||
# https://hub.docker.com/_/mariadb
|
||||
db:
|
||||
image: mariadb:10.11
|
||||
# Note: Check the recommend version here: https://docs.nextcloud.com/server/latest/admin_manual/installation/system_requirements.html#server
|
||||
image: mariadb:lts
|
||||
command: --transaction-isolation=READ-COMMITTED
|
||||
restart: always
|
||||
volumes:
|
||||
|
@ -12,6 +15,8 @@ services:
|
|||
env_file:
|
||||
- db.env
|
||||
|
||||
# Note: Redis is an external service. You can find more information about the configuration here:
|
||||
# https://hub.docker.com/_/redis
|
||||
redis:
|
||||
image: redis:alpine
|
||||
restart: always
|
||||
|
@ -32,12 +37,16 @@ services:
|
|||
- redis
|
||||
- proxy
|
||||
|
||||
# Note: Nginx is an external service. You can find more information about the configuration here:
|
||||
# https://hub.docker.com/_/nginx/
|
||||
web:
|
||||
build: ./web
|
||||
image: nginx:alpine-slim
|
||||
restart: always
|
||||
volumes:
|
||||
# https://docs.nextcloud.com/server/latest/admin_manual/installation/nginx.html
|
||||
- ./web/nginx.conf:/etc/nginx/nginx.conf:ro
|
||||
# NOTE: The `volumes` included below should match those of the `app` container (unless you know what you're doing)
|
||||
- nextcloud:/var/www/html:z,ro
|
||||
# NOTE: The `volumes` included here should match those of the `app` container (unless you know what you're doing)
|
||||
environment:
|
||||
- VIRTUAL_HOST=
|
||||
- LETSENCRYPT_HOST=
|
||||
|
@ -59,6 +68,9 @@ services:
|
|||
- db
|
||||
- redis
|
||||
|
||||
# Note: Nginx-proxy is an external service. You can find more information about the configuration here:
|
||||
# Warning: Do not use :latest tags of nginx-proxy unless absolutely sure about the consequences.
|
||||
# https://hub.docker.com/r/nginxproxy/nginx-proxy
|
||||
proxy:
|
||||
build: ./proxy
|
||||
restart: always
|
||||
|
@ -75,6 +87,8 @@ services:
|
|||
networks:
|
||||
- proxy-tier
|
||||
|
||||
# Note: Letsencrypt companion is an external service. You can find more information about the configuration here:
|
||||
# https://hub.docker.com/r/nginxproxy/acme-companion
|
||||
letsencrypt-companion:
|
||||
image: nginxproxy/acme-companion
|
||||
restart: always
|
||||
|
@ -91,7 +105,7 @@ services:
|
|||
depends_on:
|
||||
- proxy
|
||||
|
||||
# self signed
|
||||
# self signed, outdated.
|
||||
# omgwtfssl:
|
||||
# image: paulczar/omgwtfssl
|
||||
# restart: "no"
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
FROM nginxproxy/nginx-proxy:alpine
|
||||
FROM nginxproxy/nginx-proxy:1.7-alpine
|
||||
|
||||
COPY uploadsize.conf /etc/nginx/conf.d/uploadsize.conf
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
FROM nginx:alpine
|
||||
|
||||
COPY nginx.conf /etc/nginx/nginx.conf
|
|
@ -1,5 +1,8 @@
|
|||
services:
|
||||
# Note: PostgreSQL is an external service. You can find more information about the configuration here:
|
||||
# https://hub.docker.com/_/postgres
|
||||
db:
|
||||
# Note: Check the recommend version here: https://docs.nextcloud.com/server/latest/admin_manual/installation/system_requirements.html#server
|
||||
image: postgres:alpine
|
||||
restart: always
|
||||
volumes:
|
||||
|
@ -7,6 +10,8 @@ services:
|
|||
env_file:
|
||||
- db.env
|
||||
|
||||
# Note: Redis is an external service. You can find more information about the configuration here:
|
||||
# https://hub.docker.com/_/redis
|
||||
redis:
|
||||
image: redis:alpine
|
||||
restart: always
|
||||
|
@ -44,6 +49,9 @@ services:
|
|||
- db
|
||||
- redis
|
||||
|
||||
# Note: Nginx-proxy is an external service. You can find more information about the configuration here:
|
||||
# Warning: Do not use :latest tags of nginx-proxy unless absolutely sure about the consequences.
|
||||
# https://hub.docker.com/r/nginxproxy/nginx-proxy
|
||||
proxy:
|
||||
build: ./proxy
|
||||
restart: always
|
||||
|
@ -60,6 +68,8 @@ services:
|
|||
networks:
|
||||
- proxy-tier
|
||||
|
||||
# Note: Letsencrypt companion is an external service. You can find more information about the configuration here:
|
||||
# https://hub.docker.com/r/nginxproxy/acme-companion
|
||||
letsencrypt-companion:
|
||||
image: nginxproxy/acme-companion
|
||||
restart: always
|
||||
|
@ -74,7 +84,7 @@ services:
|
|||
depends_on:
|
||||
- proxy
|
||||
|
||||
# self signed
|
||||
# self signed, outdated
|
||||
# omgwtfssl:
|
||||
# image: paulczar/omgwtfssl
|
||||
# restart: "no"
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
FROM nginxproxy/nginx-proxy:alpine
|
||||
FROM nginxproxy/nginx-proxy:1.7-alpine
|
||||
|
||||
COPY uploadsize.conf /etc/nginx/conf.d/uploadsize.conf
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
version: '3'
|
||||
|
||||
services:
|
||||
# Note: PostgreSQL is an external service. You can find more information about the configuration here:
|
||||
# https://hub.docker.com/_/postgres
|
||||
db:
|
||||
# Note: Check the recommend version here: https://docs.nextcloud.com/server/latest/admin_manual/installation/system_requirements.html#server
|
||||
image: postgres:alpine
|
||||
restart: always
|
||||
volumes:
|
||||
|
@ -9,6 +10,8 @@ services:
|
|||
env_file:
|
||||
- db.env
|
||||
|
||||
# Note: Redis is an external service. You can find more information about the configuration here:
|
||||
# https://hub.docker.com/_/redis
|
||||
redis:
|
||||
image: redis:alpine
|
||||
restart: always
|
||||
|
@ -29,12 +32,16 @@ services:
|
|||
- redis
|
||||
- proxy
|
||||
|
||||
# Note: Nginx is an external service. You can find more information about the configuration here:
|
||||
# https://hub.docker.com/_/nginx/
|
||||
web:
|
||||
build: ./web
|
||||
image: nginx:alpine-slim
|
||||
restart: always
|
||||
volumes:
|
||||
# https://docs.nextcloud.com/server/latest/admin_manual/installation/nginx.html
|
||||
- ./web/nginx.conf:/etc/nginx/nginx.conf:ro
|
||||
# NOTE: The `volumes` included below should match those of the `app` container (unless you know what you're doing)
|
||||
- nextcloud:/var/www/html:z,ro
|
||||
# NOTE: The `volumes` included here should match those of the `app` container (unless you know what you're doing)
|
||||
environment:
|
||||
- VIRTUAL_HOST=
|
||||
- LETSENCRYPT_HOST=
|
||||
|
@ -56,6 +63,9 @@ services:
|
|||
- db
|
||||
- redis
|
||||
|
||||
# Note: Nginx-proxy is an external service. You can find more information about the configuration here:
|
||||
# Warning: Do not use :latest tags of nginx-proxy unless absolutely sure about the consequences.
|
||||
# https://hub.docker.com/r/nginxproxy/nginx-proxy
|
||||
proxy:
|
||||
build: ./proxy
|
||||
restart: always
|
||||
|
@ -72,6 +82,8 @@ services:
|
|||
networks:
|
||||
- proxy-tier
|
||||
|
||||
# Note: Letsencrypt companion is an external service. You can find more information about the configuration here:
|
||||
# https://hub.docker.com/r/nginxproxy/acme-companion
|
||||
letsencrypt-companion:
|
||||
image: nginxproxy/acme-companion
|
||||
restart: always
|
||||
|
@ -88,7 +100,7 @@ services:
|
|||
depends_on:
|
||||
- proxy
|
||||
|
||||
# self signed
|
||||
# self signed, outdated
|
||||
# omgwtfssl:
|
||||
# image: paulczar/omgwtfssl
|
||||
# restart: "no"
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
FROM nginxproxy/nginx-proxy:alpine
|
||||
FROM nginxproxy/nginx-proxy:1.7-alpine
|
||||
|
||||
COPY uploadsize.conf /etc/nginx/conf.d/uploadsize.conf
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
FROM nginx:alpine
|
||||
|
||||
COPY nginx.conf /etc/nginx/nginx.conf
|
|
@ -1,6 +1,7 @@
|
|||
---
|
||||
name: 🐛 Image issue
|
||||
about: Issues related to the Nextcloud Docker image
|
||||
name: 🐛 Report a bug in the image
|
||||
about: Create a report to help us improve the image
|
||||
labels: "bug, 0. Needs triage"
|
||||
---
|
||||
|
||||
<!--
|
15
.github/ISSUE_TEMPLATE/02-Image_enhancement
vendored
Normal file
15
.github/ISSUE_TEMPLATE/02-Image_enhancement
vendored
Normal file
|
@ -0,0 +1,15 @@
|
|||
---
|
||||
name: 🚀 Suggest an enhancement
|
||||
about: Suggest an idea for improving the image
|
||||
labels: "enhancement, 0. Needs triage"
|
||||
---
|
||||
|
||||
<!--
|
||||
Thanks for suggesting an idea to improve the Nextcloud Docker image!
|
||||
|
||||
This image is maintained by volunteers so if you're able to assist with implementing your idea, please mention that (and consider submitting a PR as well).
|
||||
|
||||
Note: This is the issue tracker of the official Nextcloud **Docker image**, please do NOT use this to suggestion enhancements in Nextcloud Server itself.
|
||||
|
||||
To learn more about official images, see https://github.com/docker-library/faq
|
||||
-->
|
|
@ -1,9 +1,6 @@
|
|||
# DO NOT EDIT: created by update.sh from Dockerfile-debian.template
|
||||
FROM php:8.2-apache-bookworm
|
||||
|
||||
# Define the commit hash for imagick as a variable
|
||||
ENV IMAGICK_COMMIT_HASH d7d3c24af1b4f599897408f1714600b69a56473b
|
||||
|
||||
# entrypoint.sh and cron.sh dependencies
|
||||
RUN set -ex; \
|
||||
\
|
||||
|
@ -68,23 +65,10 @@ RUN set -ex; \
|
|||
zip \
|
||||
; \
|
||||
\
|
||||
# The master version on the imagick repository is compatible with PHP 8.3. However, the PECL version is not updated yet.
|
||||
# As soon as it will get updated, we can switch back to the PECL version, instead of having this workaround.
|
||||
curl -fsSL -o imagick.tar.gz "https://github.com/Imagick/imagick/archive/$IMAGICK_COMMIT_HASH.tar.gz"; \
|
||||
tar -xzf imagick.tar.gz -C /tmp; \
|
||||
rm imagick.tar.gz; \
|
||||
cd "/tmp/imagick-$IMAGICK_COMMIT_HASH"; \
|
||||
sed -i "s/@PACKAGE_VERSION@/git-$(echo ${IMAGICK_COMMIT_HASH} | cut -c 1-7)/" php_imagick.h; \
|
||||
phpize; \
|
||||
./configure; \
|
||||
make; \
|
||||
make install; \
|
||||
cd; \
|
||||
rm -r "/tmp/imagick-$IMAGICK_COMMIT_HASH"; \
|
||||
\
|
||||
# pecl will claim success even if one install fails, so we need to perform each install separately
|
||||
pecl install APCu-5.1.24; \
|
||||
pecl install igbinary-3.2.16; \
|
||||
pecl install imagick-3.8.0; \
|
||||
pecl install memcached-3.3.0 \
|
||||
--configureoptions 'enable-memcached-igbinary="yes"'; \
|
||||
pecl install redis-6.2.0 \
|
||||
|
@ -166,7 +150,7 @@ RUN { \
|
|||
} > /etc/apache2/conf-available/apache-limits.conf; \
|
||||
a2enconf apache-limits
|
||||
|
||||
ENV NEXTCLOUD_VERSION 29.0.15
|
||||
ENV NEXTCLOUD_VERSION 29.0.16
|
||||
|
||||
RUN set -ex; \
|
||||
fetchDeps=" \
|
||||
|
@ -176,8 +160,8 @@ RUN set -ex; \
|
|||
apt-get update; \
|
||||
apt-get install -y --no-install-recommends $fetchDeps; \
|
||||
\
|
||||
curl -fsSL -o nextcloud.tar.bz2 "https://download.nextcloud.com/server/releases/nextcloud-29.0.15.tar.bz2"; \
|
||||
curl -fsSL -o nextcloud.tar.bz2.asc "https://download.nextcloud.com/server/releases/nextcloud-29.0.15.tar.bz2.asc"; \
|
||||
curl -fsSL -o nextcloud.tar.bz2 "https://download.nextcloud.com/server/releases/nextcloud-29.0.16.tar.bz2"; \
|
||||
curl -fsSL -o nextcloud.tar.bz2.asc "https://download.nextcloud.com/server/releases/nextcloud-29.0.16.tar.bz2.asc"; \
|
||||
export GNUPGHOME="$(mktemp -d)"; \
|
||||
# gpg key from https://nextcloud.com/nextcloud.asc
|
||||
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 28806A878AE423A28372792ED75899B9A724937A; \
|
||||
|
|
|
@ -23,32 +23,39 @@ run_as() {
|
|||
run_path() {
|
||||
local hook_folder_path="/docker-entrypoint-hooks.d/$1"
|
||||
local return_code=0
|
||||
local found=0
|
||||
|
||||
if ! [ -d "${hook_folder_path}" ]; then
|
||||
echo "=> Skipping the folder \"${hook_folder_path}\", because it doesn't exist"
|
||||
echo "=> Searching for hook scripts (*.sh) to run, located in the folder \"${hook_folder_path}\""
|
||||
|
||||
if ! [ -d "${hook_folder_path}" ] || directory_empty "${hook_folder_path}"; then
|
||||
echo "==> Skipped: the \"$1\" folder is empty (or does not exist)"
|
||||
return 0
|
||||
fi
|
||||
|
||||
echo "=> Searching for scripts (*.sh) to run, located in the folder: ${hook_folder_path}"
|
||||
|
||||
(
|
||||
find "${hook_folder_path}" -maxdepth 1 -iname '*.sh' '(' -type f -o -type l ')' -print | sort | while read -r script_file_path; do
|
||||
find "${hook_folder_path}" -maxdepth 1 -iname '*.sh' '(' -type f -o -type l ')' -print | sort | (
|
||||
while read -r script_file_path; do
|
||||
if ! [ -x "${script_file_path}" ]; then
|
||||
echo "==> The script \"${script_file_path}\" was skipped, because it didn't have the executable flag"
|
||||
echo "==> The script \"${script_file_path}\" was skipped, because it lacks the executable flag"
|
||||
found=$((found-1))
|
||||
continue
|
||||
fi
|
||||
|
||||
echo "==> Running the script (cwd: $(pwd)): \"${script_file_path}\""
|
||||
|
||||
found=$((found+1))
|
||||
run_as "${script_file_path}" || return_code="$?"
|
||||
|
||||
if [ "${return_code}" -ne "0" ]; then
|
||||
echo "==> Failed at executing \"${script_file_path}\". Exit code: ${return_code}"
|
||||
echo "==> Failed at executing script \"${script_file_path}\". Exit code: ${return_code}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "==> Finished the script: \"${script_file_path}\""
|
||||
echo "==> Finished executing the script: \"${script_file_path}\""
|
||||
done
|
||||
if [ "$found" -lt "1" ]; then
|
||||
echo "==> Skipped: the \"$1\" folder does not contain any valid scripts"
|
||||
else
|
||||
echo "=> Completed executing scripts in the \"$1\" folder"
|
||||
fi
|
||||
)
|
||||
}
|
||||
|
||||
|
@ -114,13 +121,21 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP
|
|||
# check if redis host is an unix socket path
|
||||
if [ "$(echo "$REDIS_HOST" | cut -c1-1)" = "/" ]; then
|
||||
if [ -n "${REDIS_HOST_PASSWORD+x}" ]; then
|
||||
echo "session.save_path = \"unix://${REDIS_HOST}?auth=${REDIS_HOST_PASSWORD}\""
|
||||
if [ -n "${REDIS_HOST_USER+x}" ]; then
|
||||
echo "session.save_path = \"unix://${REDIS_HOST}?auth[]=${REDIS_HOST_USER}&auth[]=${REDIS_HOST_PASSWORD}\""
|
||||
else
|
||||
echo "session.save_path = \"unix://${REDIS_HOST}?auth=${REDIS_HOST_PASSWORD}\""
|
||||
fi
|
||||
else
|
||||
echo "session.save_path = \"unix://${REDIS_HOST}\""
|
||||
fi
|
||||
# check if redis password has been set
|
||||
elif [ -n "${REDIS_HOST_PASSWORD+x}" ]; then
|
||||
echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth=${REDIS_HOST_PASSWORD}\""
|
||||
if [ -n "${REDIS_HOST_USER+x}" ]; then
|
||||
echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth[]=${REDIS_HOST_USER}&auth[]=${REDIS_HOST_PASSWORD}\""
|
||||
else
|
||||
echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth=${REDIS_HOST_PASSWORD}\""
|
||||
fi
|
||||
else
|
||||
echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}\""
|
||||
fi
|
||||
|
@ -237,12 +252,14 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP
|
|||
fi
|
||||
if [ -n "${NEXTCLOUD_TRUSTED_DOMAINS+x}" ]; then
|
||||
echo "Setting trusted domains…"
|
||||
set -f # turn off glob
|
||||
NC_TRUSTED_DOMAIN_IDX=1
|
||||
for DOMAIN in $NEXTCLOUD_TRUSTED_DOMAINS ; do
|
||||
DOMAIN=$(echo "$DOMAIN" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')
|
||||
run_as "php /var/www/html/occ config:system:set trusted_domains $NC_TRUSTED_DOMAIN_IDX --value=$DOMAIN"
|
||||
for DOMAIN in ${NEXTCLOUD_TRUSTED_DOMAINS}; do
|
||||
DOMAIN=$(echo "${DOMAIN}" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')
|
||||
run_as "php /var/www/html/occ config:system:set trusted_domains $NC_TRUSTED_DOMAIN_IDX --value=\"${DOMAIN}\""
|
||||
NC_TRUSTED_DOMAIN_IDX=$((NC_TRUSTED_DOMAIN_IDX+1))
|
||||
done
|
||||
set +f # turn glob back on
|
||||
fi
|
||||
|
||||
run_path post-installation
|
||||
|
|
|
@ -1,9 +1,6 @@
|
|||
# DO NOT EDIT: created by update.sh from Dockerfile-alpine.template
|
||||
FROM php:8.2-fpm-alpine3.21
|
||||
|
||||
# Define the commit hash for imagick as a variable
|
||||
ENV IMAGICK_COMMIT_HASH d7d3c24af1b4f599897408f1714600b69a56473b
|
||||
|
||||
# entrypoint.sh and cron.sh dependencies
|
||||
RUN set -ex; \
|
||||
\
|
||||
|
@ -65,23 +62,10 @@ RUN set -ex; \
|
|||
zip \
|
||||
; \
|
||||
\
|
||||
# The master version on the imagick repository is compatible with PHP 8.3. However, the PECL version is not updated yet.
|
||||
# As soon as it will get updated, we can switch back to the PECL version, instead of having this workaround.
|
||||
curl -fsSL -o imagick.tar.gz "https://github.com/Imagick/imagick/archive/$IMAGICK_COMMIT_HASH.tar.gz"; \
|
||||
tar -xzf imagick.tar.gz -C /tmp; \
|
||||
rm imagick.tar.gz; \
|
||||
cd "/tmp/imagick-$IMAGICK_COMMIT_HASH"; \
|
||||
sed -i "s/@PACKAGE_VERSION@/git-$(echo ${IMAGICK_COMMIT_HASH} | cut -c 1-7)/" php_imagick.h; \
|
||||
phpize; \
|
||||
./configure; \
|
||||
make; \
|
||||
make install; \
|
||||
cd; \
|
||||
rm -r "/tmp/imagick-$IMAGICK_COMMIT_HASH"; \
|
||||
\
|
||||
# pecl will claim success even if one install fails, so we need to perform each install separately
|
||||
pecl install APCu-5.1.24; \
|
||||
pecl install igbinary-3.2.16; \
|
||||
pecl install imagick-3.8.0; \
|
||||
pecl install memcached-3.3.0 \
|
||||
--configureoptions 'enable-memcached-igbinary="yes"'; \
|
||||
pecl install redis-6.2.0 \
|
||||
|
@ -146,7 +130,7 @@ RUN { \
|
|||
VOLUME /var/www/html
|
||||
|
||||
|
||||
ENV NEXTCLOUD_VERSION 29.0.15
|
||||
ENV NEXTCLOUD_VERSION 29.0.16
|
||||
|
||||
RUN set -ex; \
|
||||
apk add --no-cache --virtual .fetch-deps \
|
||||
|
@ -154,8 +138,8 @@ RUN set -ex; \
|
|||
gnupg \
|
||||
; \
|
||||
\
|
||||
curl -fsSL -o nextcloud.tar.bz2 "https://download.nextcloud.com/server/releases/nextcloud-29.0.15.tar.bz2"; \
|
||||
curl -fsSL -o nextcloud.tar.bz2.asc "https://download.nextcloud.com/server/releases/nextcloud-29.0.15.tar.bz2.asc"; \
|
||||
curl -fsSL -o nextcloud.tar.bz2 "https://download.nextcloud.com/server/releases/nextcloud-29.0.16.tar.bz2"; \
|
||||
curl -fsSL -o nextcloud.tar.bz2.asc "https://download.nextcloud.com/server/releases/nextcloud-29.0.16.tar.bz2.asc"; \
|
||||
export GNUPGHOME="$(mktemp -d)"; \
|
||||
# gpg key from https://nextcloud.com/nextcloud.asc
|
||||
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 28806A878AE423A28372792ED75899B9A724937A; \
|
||||
|
|
|
@ -23,32 +23,39 @@ run_as() {
|
|||
run_path() {
|
||||
local hook_folder_path="/docker-entrypoint-hooks.d/$1"
|
||||
local return_code=0
|
||||
local found=0
|
||||
|
||||
if ! [ -d "${hook_folder_path}" ]; then
|
||||
echo "=> Skipping the folder \"${hook_folder_path}\", because it doesn't exist"
|
||||
echo "=> Searching for hook scripts (*.sh) to run, located in the folder \"${hook_folder_path}\""
|
||||
|
||||
if ! [ -d "${hook_folder_path}" ] || directory_empty "${hook_folder_path}"; then
|
||||
echo "==> Skipped: the \"$1\" folder is empty (or does not exist)"
|
||||
return 0
|
||||
fi
|
||||
|
||||
echo "=> Searching for scripts (*.sh) to run, located in the folder: ${hook_folder_path}"
|
||||
|
||||
(
|
||||
find "${hook_folder_path}" -maxdepth 1 -iname '*.sh' '(' -type f -o -type l ')' -print | sort | while read -r script_file_path; do
|
||||
find "${hook_folder_path}" -maxdepth 1 -iname '*.sh' '(' -type f -o -type l ')' -print | sort | (
|
||||
while read -r script_file_path; do
|
||||
if ! [ -x "${script_file_path}" ]; then
|
||||
echo "==> The script \"${script_file_path}\" was skipped, because it didn't have the executable flag"
|
||||
echo "==> The script \"${script_file_path}\" was skipped, because it lacks the executable flag"
|
||||
found=$((found-1))
|
||||
continue
|
||||
fi
|
||||
|
||||
echo "==> Running the script (cwd: $(pwd)): \"${script_file_path}\""
|
||||
|
||||
found=$((found+1))
|
||||
run_as "${script_file_path}" || return_code="$?"
|
||||
|
||||
if [ "${return_code}" -ne "0" ]; then
|
||||
echo "==> Failed at executing \"${script_file_path}\". Exit code: ${return_code}"
|
||||
echo "==> Failed at executing script \"${script_file_path}\". Exit code: ${return_code}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "==> Finished the script: \"${script_file_path}\""
|
||||
echo "==> Finished executing the script: \"${script_file_path}\""
|
||||
done
|
||||
if [ "$found" -lt "1" ]; then
|
||||
echo "==> Skipped: the \"$1\" folder does not contain any valid scripts"
|
||||
else
|
||||
echo "=> Completed executing scripts in the \"$1\" folder"
|
||||
fi
|
||||
)
|
||||
}
|
||||
|
||||
|
@ -114,13 +121,21 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP
|
|||
# check if redis host is an unix socket path
|
||||
if [ "$(echo "$REDIS_HOST" | cut -c1-1)" = "/" ]; then
|
||||
if [ -n "${REDIS_HOST_PASSWORD+x}" ]; then
|
||||
echo "session.save_path = \"unix://${REDIS_HOST}?auth=${REDIS_HOST_PASSWORD}\""
|
||||
if [ -n "${REDIS_HOST_USER+x}" ]; then
|
||||
echo "session.save_path = \"unix://${REDIS_HOST}?auth[]=${REDIS_HOST_USER}&auth[]=${REDIS_HOST_PASSWORD}\""
|
||||
else
|
||||
echo "session.save_path = \"unix://${REDIS_HOST}?auth=${REDIS_HOST_PASSWORD}\""
|
||||
fi
|
||||
else
|
||||
echo "session.save_path = \"unix://${REDIS_HOST}\""
|
||||
fi
|
||||
# check if redis password has been set
|
||||
elif [ -n "${REDIS_HOST_PASSWORD+x}" ]; then
|
||||
echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth=${REDIS_HOST_PASSWORD}\""
|
||||
if [ -n "${REDIS_HOST_USER+x}" ]; then
|
||||
echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth[]=${REDIS_HOST_USER}&auth[]=${REDIS_HOST_PASSWORD}\""
|
||||
else
|
||||
echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth=${REDIS_HOST_PASSWORD}\""
|
||||
fi
|
||||
else
|
||||
echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}\""
|
||||
fi
|
||||
|
@ -237,12 +252,14 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP
|
|||
fi
|
||||
if [ -n "${NEXTCLOUD_TRUSTED_DOMAINS+x}" ]; then
|
||||
echo "Setting trusted domains…"
|
||||
set -f # turn off glob
|
||||
NC_TRUSTED_DOMAIN_IDX=1
|
||||
for DOMAIN in $NEXTCLOUD_TRUSTED_DOMAINS ; do
|
||||
DOMAIN=$(echo "$DOMAIN" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')
|
||||
run_as "php /var/www/html/occ config:system:set trusted_domains $NC_TRUSTED_DOMAIN_IDX --value=$DOMAIN"
|
||||
for DOMAIN in ${NEXTCLOUD_TRUSTED_DOMAINS}; do
|
||||
DOMAIN=$(echo "${DOMAIN}" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')
|
||||
run_as "php /var/www/html/occ config:system:set trusted_domains $NC_TRUSTED_DOMAIN_IDX --value=\"${DOMAIN}\""
|
||||
NC_TRUSTED_DOMAIN_IDX=$((NC_TRUSTED_DOMAIN_IDX+1))
|
||||
done
|
||||
set +f # turn glob back on
|
||||
fi
|
||||
|
||||
run_path post-installation
|
||||
|
|
|
@ -1,9 +1,6 @@
|
|||
# DO NOT EDIT: created by update.sh from Dockerfile-debian.template
|
||||
FROM php:8.2-fpm-bookworm
|
||||
|
||||
# Define the commit hash for imagick as a variable
|
||||
ENV IMAGICK_COMMIT_HASH d7d3c24af1b4f599897408f1714600b69a56473b
|
||||
|
||||
# entrypoint.sh and cron.sh dependencies
|
||||
RUN set -ex; \
|
||||
\
|
||||
|
@ -68,23 +65,10 @@ RUN set -ex; \
|
|||
zip \
|
||||
; \
|
||||
\
|
||||
# The master version on the imagick repository is compatible with PHP 8.3. However, the PECL version is not updated yet.
|
||||
# As soon as it will get updated, we can switch back to the PECL version, instead of having this workaround.
|
||||
curl -fsSL -o imagick.tar.gz "https://github.com/Imagick/imagick/archive/$IMAGICK_COMMIT_HASH.tar.gz"; \
|
||||
tar -xzf imagick.tar.gz -C /tmp; \
|
||||
rm imagick.tar.gz; \
|
||||
cd "/tmp/imagick-$IMAGICK_COMMIT_HASH"; \
|
||||
sed -i "s/@PACKAGE_VERSION@/git-$(echo ${IMAGICK_COMMIT_HASH} | cut -c 1-7)/" php_imagick.h; \
|
||||
phpize; \
|
||||
./configure; \
|
||||
make; \
|
||||
make install; \
|
||||
cd; \
|
||||
rm -r "/tmp/imagick-$IMAGICK_COMMIT_HASH"; \
|
||||
\
|
||||
# pecl will claim success even if one install fails, so we need to perform each install separately
|
||||
pecl install APCu-5.1.24; \
|
||||
pecl install igbinary-3.2.16; \
|
||||
pecl install imagick-3.8.0; \
|
||||
pecl install memcached-3.3.0 \
|
||||
--configureoptions 'enable-memcached-igbinary="yes"'; \
|
||||
pecl install redis-6.2.0 \
|
||||
|
@ -151,7 +135,7 @@ RUN { \
|
|||
VOLUME /var/www/html
|
||||
|
||||
|
||||
ENV NEXTCLOUD_VERSION 29.0.15
|
||||
ENV NEXTCLOUD_VERSION 29.0.16
|
||||
|
||||
RUN set -ex; \
|
||||
fetchDeps=" \
|
||||
|
@ -161,8 +145,8 @@ RUN set -ex; \
|
|||
apt-get update; \
|
||||
apt-get install -y --no-install-recommends $fetchDeps; \
|
||||
\
|
||||
curl -fsSL -o nextcloud.tar.bz2 "https://download.nextcloud.com/server/releases/nextcloud-29.0.15.tar.bz2"; \
|
||||
curl -fsSL -o nextcloud.tar.bz2.asc "https://download.nextcloud.com/server/releases/nextcloud-29.0.15.tar.bz2.asc"; \
|
||||
curl -fsSL -o nextcloud.tar.bz2 "https://download.nextcloud.com/server/releases/nextcloud-29.0.16.tar.bz2"; \
|
||||
curl -fsSL -o nextcloud.tar.bz2.asc "https://download.nextcloud.com/server/releases/nextcloud-29.0.16.tar.bz2.asc"; \
|
||||
export GNUPGHOME="$(mktemp -d)"; \
|
||||
# gpg key from https://nextcloud.com/nextcloud.asc
|
||||
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 28806A878AE423A28372792ED75899B9A724937A; \
|
||||
|
|
|
@ -23,32 +23,39 @@ run_as() {
|
|||
run_path() {
|
||||
local hook_folder_path="/docker-entrypoint-hooks.d/$1"
|
||||
local return_code=0
|
||||
local found=0
|
||||
|
||||
if ! [ -d "${hook_folder_path}" ]; then
|
||||
echo "=> Skipping the folder \"${hook_folder_path}\", because it doesn't exist"
|
||||
echo "=> Searching for hook scripts (*.sh) to run, located in the folder \"${hook_folder_path}\""
|
||||
|
||||
if ! [ -d "${hook_folder_path}" ] || directory_empty "${hook_folder_path}"; then
|
||||
echo "==> Skipped: the \"$1\" folder is empty (or does not exist)"
|
||||
return 0
|
||||
fi
|
||||
|
||||
echo "=> Searching for scripts (*.sh) to run, located in the folder: ${hook_folder_path}"
|
||||
|
||||
(
|
||||
find "${hook_folder_path}" -maxdepth 1 -iname '*.sh' '(' -type f -o -type l ')' -print | sort | while read -r script_file_path; do
|
||||
find "${hook_folder_path}" -maxdepth 1 -iname '*.sh' '(' -type f -o -type l ')' -print | sort | (
|
||||
while read -r script_file_path; do
|
||||
if ! [ -x "${script_file_path}" ]; then
|
||||
echo "==> The script \"${script_file_path}\" was skipped, because it didn't have the executable flag"
|
||||
echo "==> The script \"${script_file_path}\" was skipped, because it lacks the executable flag"
|
||||
found=$((found-1))
|
||||
continue
|
||||
fi
|
||||
|
||||
echo "==> Running the script (cwd: $(pwd)): \"${script_file_path}\""
|
||||
|
||||
found=$((found+1))
|
||||
run_as "${script_file_path}" || return_code="$?"
|
||||
|
||||
if [ "${return_code}" -ne "0" ]; then
|
||||
echo "==> Failed at executing \"${script_file_path}\". Exit code: ${return_code}"
|
||||
echo "==> Failed at executing script \"${script_file_path}\". Exit code: ${return_code}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "==> Finished the script: \"${script_file_path}\""
|
||||
echo "==> Finished executing the script: \"${script_file_path}\""
|
||||
done
|
||||
if [ "$found" -lt "1" ]; then
|
||||
echo "==> Skipped: the \"$1\" folder does not contain any valid scripts"
|
||||
else
|
||||
echo "=> Completed executing scripts in the \"$1\" folder"
|
||||
fi
|
||||
)
|
||||
}
|
||||
|
||||
|
@ -114,13 +121,21 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP
|
|||
# check if redis host is an unix socket path
|
||||
if [ "$(echo "$REDIS_HOST" | cut -c1-1)" = "/" ]; then
|
||||
if [ -n "${REDIS_HOST_PASSWORD+x}" ]; then
|
||||
echo "session.save_path = \"unix://${REDIS_HOST}?auth=${REDIS_HOST_PASSWORD}\""
|
||||
if [ -n "${REDIS_HOST_USER+x}" ]; then
|
||||
echo "session.save_path = \"unix://${REDIS_HOST}?auth[]=${REDIS_HOST_USER}&auth[]=${REDIS_HOST_PASSWORD}\""
|
||||
else
|
||||
echo "session.save_path = \"unix://${REDIS_HOST}?auth=${REDIS_HOST_PASSWORD}\""
|
||||
fi
|
||||
else
|
||||
echo "session.save_path = \"unix://${REDIS_HOST}\""
|
||||
fi
|
||||
# check if redis password has been set
|
||||
elif [ -n "${REDIS_HOST_PASSWORD+x}" ]; then
|
||||
echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth=${REDIS_HOST_PASSWORD}\""
|
||||
if [ -n "${REDIS_HOST_USER+x}" ]; then
|
||||
echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth[]=${REDIS_HOST_USER}&auth[]=${REDIS_HOST_PASSWORD}\""
|
||||
else
|
||||
echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth=${REDIS_HOST_PASSWORD}\""
|
||||
fi
|
||||
else
|
||||
echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}\""
|
||||
fi
|
||||
|
@ -237,12 +252,14 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP
|
|||
fi
|
||||
if [ -n "${NEXTCLOUD_TRUSTED_DOMAINS+x}" ]; then
|
||||
echo "Setting trusted domains…"
|
||||
set -f # turn off glob
|
||||
NC_TRUSTED_DOMAIN_IDX=1
|
||||
for DOMAIN in $NEXTCLOUD_TRUSTED_DOMAINS ; do
|
||||
DOMAIN=$(echo "$DOMAIN" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')
|
||||
run_as "php /var/www/html/occ config:system:set trusted_domains $NC_TRUSTED_DOMAIN_IDX --value=$DOMAIN"
|
||||
for DOMAIN in ${NEXTCLOUD_TRUSTED_DOMAINS}; do
|
||||
DOMAIN=$(echo "${DOMAIN}" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')
|
||||
run_as "php /var/www/html/occ config:system:set trusted_domains $NC_TRUSTED_DOMAIN_IDX --value=\"${DOMAIN}\""
|
||||
NC_TRUSTED_DOMAIN_IDX=$((NC_TRUSTED_DOMAIN_IDX+1))
|
||||
done
|
||||
set +f # turn glob back on
|
||||
fi
|
||||
|
||||
run_path post-installation
|
||||
|
|
|
@ -1,8 +1,5 @@
|
|||
# DO NOT EDIT: created by update.sh from Dockerfile-debian.template
|
||||
FROM php:8.2-apache-bookworm
|
||||
|
||||
# Define the commit hash for imagick as a variable
|
||||
ENV IMAGICK_COMMIT_HASH d7d3c24af1b4f599897408f1714600b69a56473b
|
||||
FROM php:8.3-apache-bookworm
|
||||
|
||||
# entrypoint.sh and cron.sh dependencies
|
||||
RUN set -ex; \
|
||||
|
@ -68,23 +65,10 @@ RUN set -ex; \
|
|||
zip \
|
||||
; \
|
||||
\
|
||||
# The master version on the imagick repository is compatible with PHP 8.3. However, the PECL version is not updated yet.
|
||||
# As soon as it will get updated, we can switch back to the PECL version, instead of having this workaround.
|
||||
curl -fsSL -o imagick.tar.gz "https://github.com/Imagick/imagick/archive/$IMAGICK_COMMIT_HASH.tar.gz"; \
|
||||
tar -xzf imagick.tar.gz -C /tmp; \
|
||||
rm imagick.tar.gz; \
|
||||
cd "/tmp/imagick-$IMAGICK_COMMIT_HASH"; \
|
||||
sed -i "s/@PACKAGE_VERSION@/git-$(echo ${IMAGICK_COMMIT_HASH} | cut -c 1-7)/" php_imagick.h; \
|
||||
phpize; \
|
||||
./configure; \
|
||||
make; \
|
||||
make install; \
|
||||
cd; \
|
||||
rm -r "/tmp/imagick-$IMAGICK_COMMIT_HASH"; \
|
||||
\
|
||||
# pecl will claim success even if one install fails, so we need to perform each install separately
|
||||
pecl install APCu-5.1.24; \
|
||||
pecl install igbinary-3.2.16; \
|
||||
pecl install imagick-3.8.0; \
|
||||
pecl install memcached-3.3.0 \
|
||||
--configureoptions 'enable-memcached-igbinary="yes"'; \
|
||||
pecl install redis-6.2.0 \
|
||||
|
@ -166,7 +150,7 @@ RUN { \
|
|||
} > /etc/apache2/conf-available/apache-limits.conf; \
|
||||
a2enconf apache-limits
|
||||
|
||||
ENV NEXTCLOUD_VERSION 30.0.9
|
||||
ENV NEXTCLOUD_VERSION 30.0.10
|
||||
|
||||
RUN set -ex; \
|
||||
fetchDeps=" \
|
||||
|
@ -176,8 +160,8 @@ RUN set -ex; \
|
|||
apt-get update; \
|
||||
apt-get install -y --no-install-recommends $fetchDeps; \
|
||||
\
|
||||
curl -fsSL -o nextcloud.tar.bz2 "https://download.nextcloud.com/server/releases/nextcloud-30.0.9.tar.bz2"; \
|
||||
curl -fsSL -o nextcloud.tar.bz2.asc "https://download.nextcloud.com/server/releases/nextcloud-30.0.9.tar.bz2.asc"; \
|
||||
curl -fsSL -o nextcloud.tar.bz2 "https://download.nextcloud.com/server/releases/nextcloud-30.0.10.tar.bz2"; \
|
||||
curl -fsSL -o nextcloud.tar.bz2.asc "https://download.nextcloud.com/server/releases/nextcloud-30.0.10.tar.bz2.asc"; \
|
||||
export GNUPGHOME="$(mktemp -d)"; \
|
||||
# gpg key from https://nextcloud.com/nextcloud.asc
|
||||
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 28806A878AE423A28372792ED75899B9A724937A; \
|
||||
|
|
|
@ -23,32 +23,39 @@ run_as() {
|
|||
run_path() {
|
||||
local hook_folder_path="/docker-entrypoint-hooks.d/$1"
|
||||
local return_code=0
|
||||
local found=0
|
||||
|
||||
if ! [ -d "${hook_folder_path}" ]; then
|
||||
echo "=> Skipping the folder \"${hook_folder_path}\", because it doesn't exist"
|
||||
echo "=> Searching for hook scripts (*.sh) to run, located in the folder \"${hook_folder_path}\""
|
||||
|
||||
if ! [ -d "${hook_folder_path}" ] || directory_empty "${hook_folder_path}"; then
|
||||
echo "==> Skipped: the \"$1\" folder is empty (or does not exist)"
|
||||
return 0
|
||||
fi
|
||||
|
||||
echo "=> Searching for scripts (*.sh) to run, located in the folder: ${hook_folder_path}"
|
||||
|
||||
(
|
||||
find "${hook_folder_path}" -maxdepth 1 -iname '*.sh' '(' -type f -o -type l ')' -print | sort | while read -r script_file_path; do
|
||||
find "${hook_folder_path}" -maxdepth 1 -iname '*.sh' '(' -type f -o -type l ')' -print | sort | (
|
||||
while read -r script_file_path; do
|
||||
if ! [ -x "${script_file_path}" ]; then
|
||||
echo "==> The script \"${script_file_path}\" was skipped, because it didn't have the executable flag"
|
||||
echo "==> The script \"${script_file_path}\" was skipped, because it lacks the executable flag"
|
||||
found=$((found-1))
|
||||
continue
|
||||
fi
|
||||
|
||||
echo "==> Running the script (cwd: $(pwd)): \"${script_file_path}\""
|
||||
|
||||
found=$((found+1))
|
||||
run_as "${script_file_path}" || return_code="$?"
|
||||
|
||||
if [ "${return_code}" -ne "0" ]; then
|
||||
echo "==> Failed at executing \"${script_file_path}\". Exit code: ${return_code}"
|
||||
echo "==> Failed at executing script \"${script_file_path}\". Exit code: ${return_code}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "==> Finished the script: \"${script_file_path}\""
|
||||
echo "==> Finished executing the script: \"${script_file_path}\""
|
||||
done
|
||||
if [ "$found" -lt "1" ]; then
|
||||
echo "==> Skipped: the \"$1\" folder does not contain any valid scripts"
|
||||
else
|
||||
echo "=> Completed executing scripts in the \"$1\" folder"
|
||||
fi
|
||||
)
|
||||
}
|
||||
|
||||
|
@ -114,13 +121,21 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP
|
|||
# check if redis host is an unix socket path
|
||||
if [ "$(echo "$REDIS_HOST" | cut -c1-1)" = "/" ]; then
|
||||
if [ -n "${REDIS_HOST_PASSWORD+x}" ]; then
|
||||
echo "session.save_path = \"unix://${REDIS_HOST}?auth=${REDIS_HOST_PASSWORD}\""
|
||||
if [ -n "${REDIS_HOST_USER+x}" ]; then
|
||||
echo "session.save_path = \"unix://${REDIS_HOST}?auth[]=${REDIS_HOST_USER}&auth[]=${REDIS_HOST_PASSWORD}\""
|
||||
else
|
||||
echo "session.save_path = \"unix://${REDIS_HOST}?auth=${REDIS_HOST_PASSWORD}\""
|
||||
fi
|
||||
else
|
||||
echo "session.save_path = \"unix://${REDIS_HOST}\""
|
||||
fi
|
||||
# check if redis password has been set
|
||||
elif [ -n "${REDIS_HOST_PASSWORD+x}" ]; then
|
||||
echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth=${REDIS_HOST_PASSWORD}\""
|
||||
if [ -n "${REDIS_HOST_USER+x}" ]; then
|
||||
echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth[]=${REDIS_HOST_USER}&auth[]=${REDIS_HOST_PASSWORD}\""
|
||||
else
|
||||
echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth=${REDIS_HOST_PASSWORD}\""
|
||||
fi
|
||||
else
|
||||
echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}\""
|
||||
fi
|
||||
|
@ -237,12 +252,14 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP
|
|||
fi
|
||||
if [ -n "${NEXTCLOUD_TRUSTED_DOMAINS+x}" ]; then
|
||||
echo "Setting trusted domains…"
|
||||
set -f # turn off glob
|
||||
NC_TRUSTED_DOMAIN_IDX=1
|
||||
for DOMAIN in $NEXTCLOUD_TRUSTED_DOMAINS ; do
|
||||
DOMAIN=$(echo "$DOMAIN" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')
|
||||
run_as "php /var/www/html/occ config:system:set trusted_domains $NC_TRUSTED_DOMAIN_IDX --value=$DOMAIN"
|
||||
for DOMAIN in ${NEXTCLOUD_TRUSTED_DOMAINS}; do
|
||||
DOMAIN=$(echo "${DOMAIN}" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')
|
||||
run_as "php /var/www/html/occ config:system:set trusted_domains $NC_TRUSTED_DOMAIN_IDX --value=\"${DOMAIN}\""
|
||||
NC_TRUSTED_DOMAIN_IDX=$((NC_TRUSTED_DOMAIN_IDX+1))
|
||||
done
|
||||
set +f # turn glob back on
|
||||
fi
|
||||
|
||||
run_path post-installation
|
||||
|
|
|
@ -1,8 +1,5 @@
|
|||
# DO NOT EDIT: created by update.sh from Dockerfile-alpine.template
|
||||
FROM php:8.2-fpm-alpine3.21
|
||||
|
||||
# Define the commit hash for imagick as a variable
|
||||
ENV IMAGICK_COMMIT_HASH d7d3c24af1b4f599897408f1714600b69a56473b
|
||||
FROM php:8.3-fpm-alpine3.21
|
||||
|
||||
# entrypoint.sh and cron.sh dependencies
|
||||
RUN set -ex; \
|
||||
|
@ -65,23 +62,10 @@ RUN set -ex; \
|
|||
zip \
|
||||
; \
|
||||
\
|
||||
# The master version on the imagick repository is compatible with PHP 8.3. However, the PECL version is not updated yet.
|
||||
# As soon as it will get updated, we can switch back to the PECL version, instead of having this workaround.
|
||||
curl -fsSL -o imagick.tar.gz "https://github.com/Imagick/imagick/archive/$IMAGICK_COMMIT_HASH.tar.gz"; \
|
||||
tar -xzf imagick.tar.gz -C /tmp; \
|
||||
rm imagick.tar.gz; \
|
||||
cd "/tmp/imagick-$IMAGICK_COMMIT_HASH"; \
|
||||
sed -i "s/@PACKAGE_VERSION@/git-$(echo ${IMAGICK_COMMIT_HASH} | cut -c 1-7)/" php_imagick.h; \
|
||||
phpize; \
|
||||
./configure; \
|
||||
make; \
|
||||
make install; \
|
||||
cd; \
|
||||
rm -r "/tmp/imagick-$IMAGICK_COMMIT_HASH"; \
|
||||
\
|
||||
# pecl will claim success even if one install fails, so we need to perform each install separately
|
||||
pecl install APCu-5.1.24; \
|
||||
pecl install igbinary-3.2.16; \
|
||||
pecl install imagick-3.8.0; \
|
||||
pecl install memcached-3.3.0 \
|
||||
--configureoptions 'enable-memcached-igbinary="yes"'; \
|
||||
pecl install redis-6.2.0 \
|
||||
|
@ -146,7 +130,7 @@ RUN { \
|
|||
VOLUME /var/www/html
|
||||
|
||||
|
||||
ENV NEXTCLOUD_VERSION 30.0.9
|
||||
ENV NEXTCLOUD_VERSION 30.0.10
|
||||
|
||||
RUN set -ex; \
|
||||
apk add --no-cache --virtual .fetch-deps \
|
||||
|
@ -154,8 +138,8 @@ RUN set -ex; \
|
|||
gnupg \
|
||||
; \
|
||||
\
|
||||
curl -fsSL -o nextcloud.tar.bz2 "https://download.nextcloud.com/server/releases/nextcloud-30.0.9.tar.bz2"; \
|
||||
curl -fsSL -o nextcloud.tar.bz2.asc "https://download.nextcloud.com/server/releases/nextcloud-30.0.9.tar.bz2.asc"; \
|
||||
curl -fsSL -o nextcloud.tar.bz2 "https://download.nextcloud.com/server/releases/nextcloud-30.0.10.tar.bz2"; \
|
||||
curl -fsSL -o nextcloud.tar.bz2.asc "https://download.nextcloud.com/server/releases/nextcloud-30.0.10.tar.bz2.asc"; \
|
||||
export GNUPGHOME="$(mktemp -d)"; \
|
||||
# gpg key from https://nextcloud.com/nextcloud.asc
|
||||
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 28806A878AE423A28372792ED75899B9A724937A; \
|
||||
|
|
|
@ -23,32 +23,39 @@ run_as() {
|
|||
run_path() {
|
||||
local hook_folder_path="/docker-entrypoint-hooks.d/$1"
|
||||
local return_code=0
|
||||
local found=0
|
||||
|
||||
if ! [ -d "${hook_folder_path}" ]; then
|
||||
echo "=> Skipping the folder \"${hook_folder_path}\", because it doesn't exist"
|
||||
echo "=> Searching for hook scripts (*.sh) to run, located in the folder \"${hook_folder_path}\""
|
||||
|
||||
if ! [ -d "${hook_folder_path}" ] || directory_empty "${hook_folder_path}"; then
|
||||
echo "==> Skipped: the \"$1\" folder is empty (or does not exist)"
|
||||
return 0
|
||||
fi
|
||||
|
||||
echo "=> Searching for scripts (*.sh) to run, located in the folder: ${hook_folder_path}"
|
||||
|
||||
(
|
||||
find "${hook_folder_path}" -maxdepth 1 -iname '*.sh' '(' -type f -o -type l ')' -print | sort | while read -r script_file_path; do
|
||||
find "${hook_folder_path}" -maxdepth 1 -iname '*.sh' '(' -type f -o -type l ')' -print | sort | (
|
||||
while read -r script_file_path; do
|
||||
if ! [ -x "${script_file_path}" ]; then
|
||||
echo "==> The script \"${script_file_path}\" was skipped, because it didn't have the executable flag"
|
||||
echo "==> The script \"${script_file_path}\" was skipped, because it lacks the executable flag"
|
||||
found=$((found-1))
|
||||
continue
|
||||
fi
|
||||
|
||||
echo "==> Running the script (cwd: $(pwd)): \"${script_file_path}\""
|
||||
|
||||
found=$((found+1))
|
||||
run_as "${script_file_path}" || return_code="$?"
|
||||
|
||||
if [ "${return_code}" -ne "0" ]; then
|
||||
echo "==> Failed at executing \"${script_file_path}\". Exit code: ${return_code}"
|
||||
echo "==> Failed at executing script \"${script_file_path}\". Exit code: ${return_code}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "==> Finished the script: \"${script_file_path}\""
|
||||
echo "==> Finished executing the script: \"${script_file_path}\""
|
||||
done
|
||||
if [ "$found" -lt "1" ]; then
|
||||
echo "==> Skipped: the \"$1\" folder does not contain any valid scripts"
|
||||
else
|
||||
echo "=> Completed executing scripts in the \"$1\" folder"
|
||||
fi
|
||||
)
|
||||
}
|
||||
|
||||
|
@ -114,13 +121,21 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP
|
|||
# check if redis host is an unix socket path
|
||||
if [ "$(echo "$REDIS_HOST" | cut -c1-1)" = "/" ]; then
|
||||
if [ -n "${REDIS_HOST_PASSWORD+x}" ]; then
|
||||
echo "session.save_path = \"unix://${REDIS_HOST}?auth=${REDIS_HOST_PASSWORD}\""
|
||||
if [ -n "${REDIS_HOST_USER+x}" ]; then
|
||||
echo "session.save_path = \"unix://${REDIS_HOST}?auth[]=${REDIS_HOST_USER}&auth[]=${REDIS_HOST_PASSWORD}\""
|
||||
else
|
||||
echo "session.save_path = \"unix://${REDIS_HOST}?auth=${REDIS_HOST_PASSWORD}\""
|
||||
fi
|
||||
else
|
||||
echo "session.save_path = \"unix://${REDIS_HOST}\""
|
||||
fi
|
||||
# check if redis password has been set
|
||||
elif [ -n "${REDIS_HOST_PASSWORD+x}" ]; then
|
||||
echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth=${REDIS_HOST_PASSWORD}\""
|
||||
if [ -n "${REDIS_HOST_USER+x}" ]; then
|
||||
echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth[]=${REDIS_HOST_USER}&auth[]=${REDIS_HOST_PASSWORD}\""
|
||||
else
|
||||
echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth=${REDIS_HOST_PASSWORD}\""
|
||||
fi
|
||||
else
|
||||
echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}\""
|
||||
fi
|
||||
|
@ -237,12 +252,14 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP
|
|||
fi
|
||||
if [ -n "${NEXTCLOUD_TRUSTED_DOMAINS+x}" ]; then
|
||||
echo "Setting trusted domains…"
|
||||
set -f # turn off glob
|
||||
NC_TRUSTED_DOMAIN_IDX=1
|
||||
for DOMAIN in $NEXTCLOUD_TRUSTED_DOMAINS ; do
|
||||
DOMAIN=$(echo "$DOMAIN" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')
|
||||
run_as "php /var/www/html/occ config:system:set trusted_domains $NC_TRUSTED_DOMAIN_IDX --value=$DOMAIN"
|
||||
for DOMAIN in ${NEXTCLOUD_TRUSTED_DOMAINS}; do
|
||||
DOMAIN=$(echo "${DOMAIN}" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')
|
||||
run_as "php /var/www/html/occ config:system:set trusted_domains $NC_TRUSTED_DOMAIN_IDX --value=\"${DOMAIN}\""
|
||||
NC_TRUSTED_DOMAIN_IDX=$((NC_TRUSTED_DOMAIN_IDX+1))
|
||||
done
|
||||
set +f # turn glob back on
|
||||
fi
|
||||
|
||||
run_path post-installation
|
||||
|
|
|
@ -1,8 +1,5 @@
|
|||
# DO NOT EDIT: created by update.sh from Dockerfile-debian.template
|
||||
FROM php:8.2-fpm-bookworm
|
||||
|
||||
# Define the commit hash for imagick as a variable
|
||||
ENV IMAGICK_COMMIT_HASH d7d3c24af1b4f599897408f1714600b69a56473b
|
||||
FROM php:8.3-fpm-bookworm
|
||||
|
||||
# entrypoint.sh and cron.sh dependencies
|
||||
RUN set -ex; \
|
||||
|
@ -68,23 +65,10 @@ RUN set -ex; \
|
|||
zip \
|
||||
; \
|
||||
\
|
||||
# The master version on the imagick repository is compatible with PHP 8.3. However, the PECL version is not updated yet.
|
||||
# As soon as it will get updated, we can switch back to the PECL version, instead of having this workaround.
|
||||
curl -fsSL -o imagick.tar.gz "https://github.com/Imagick/imagick/archive/$IMAGICK_COMMIT_HASH.tar.gz"; \
|
||||
tar -xzf imagick.tar.gz -C /tmp; \
|
||||
rm imagick.tar.gz; \
|
||||
cd "/tmp/imagick-$IMAGICK_COMMIT_HASH"; \
|
||||
sed -i "s/@PACKAGE_VERSION@/git-$(echo ${IMAGICK_COMMIT_HASH} | cut -c 1-7)/" php_imagick.h; \
|
||||
phpize; \
|
||||
./configure; \
|
||||
make; \
|
||||
make install; \
|
||||
cd; \
|
||||
rm -r "/tmp/imagick-$IMAGICK_COMMIT_HASH"; \
|
||||
\
|
||||
# pecl will claim success even if one install fails, so we need to perform each install separately
|
||||
pecl install APCu-5.1.24; \
|
||||
pecl install igbinary-3.2.16; \
|
||||
pecl install imagick-3.8.0; \
|
||||
pecl install memcached-3.3.0 \
|
||||
--configureoptions 'enable-memcached-igbinary="yes"'; \
|
||||
pecl install redis-6.2.0 \
|
||||
|
@ -151,7 +135,7 @@ RUN { \
|
|||
VOLUME /var/www/html
|
||||
|
||||
|
||||
ENV NEXTCLOUD_VERSION 30.0.9
|
||||
ENV NEXTCLOUD_VERSION 30.0.10
|
||||
|
||||
RUN set -ex; \
|
||||
fetchDeps=" \
|
||||
|
@ -161,8 +145,8 @@ RUN set -ex; \
|
|||
apt-get update; \
|
||||
apt-get install -y --no-install-recommends $fetchDeps; \
|
||||
\
|
||||
curl -fsSL -o nextcloud.tar.bz2 "https://download.nextcloud.com/server/releases/nextcloud-30.0.9.tar.bz2"; \
|
||||
curl -fsSL -o nextcloud.tar.bz2.asc "https://download.nextcloud.com/server/releases/nextcloud-30.0.9.tar.bz2.asc"; \
|
||||
curl -fsSL -o nextcloud.tar.bz2 "https://download.nextcloud.com/server/releases/nextcloud-30.0.10.tar.bz2"; \
|
||||
curl -fsSL -o nextcloud.tar.bz2.asc "https://download.nextcloud.com/server/releases/nextcloud-30.0.10.tar.bz2.asc"; \
|
||||
export GNUPGHOME="$(mktemp -d)"; \
|
||||
# gpg key from https://nextcloud.com/nextcloud.asc
|
||||
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 28806A878AE423A28372792ED75899B9A724937A; \
|
||||
|
|
|
@ -23,32 +23,39 @@ run_as() {
|
|||
run_path() {
|
||||
local hook_folder_path="/docker-entrypoint-hooks.d/$1"
|
||||
local return_code=0
|
||||
local found=0
|
||||
|
||||
if ! [ -d "${hook_folder_path}" ]; then
|
||||
echo "=> Skipping the folder \"${hook_folder_path}\", because it doesn't exist"
|
||||
echo "=> Searching for hook scripts (*.sh) to run, located in the folder \"${hook_folder_path}\""
|
||||
|
||||
if ! [ -d "${hook_folder_path}" ] || directory_empty "${hook_folder_path}"; then
|
||||
echo "==> Skipped: the \"$1\" folder is empty (or does not exist)"
|
||||
return 0
|
||||
fi
|
||||
|
||||
echo "=> Searching for scripts (*.sh) to run, located in the folder: ${hook_folder_path}"
|
||||
|
||||
(
|
||||
find "${hook_folder_path}" -maxdepth 1 -iname '*.sh' '(' -type f -o -type l ')' -print | sort | while read -r script_file_path; do
|
||||
find "${hook_folder_path}" -maxdepth 1 -iname '*.sh' '(' -type f -o -type l ')' -print | sort | (
|
||||
while read -r script_file_path; do
|
||||
if ! [ -x "${script_file_path}" ]; then
|
||||
echo "==> The script \"${script_file_path}\" was skipped, because it didn't have the executable flag"
|
||||
echo "==> The script \"${script_file_path}\" was skipped, because it lacks the executable flag"
|
||||
found=$((found-1))
|
||||
continue
|
||||
fi
|
||||
|
||||
echo "==> Running the script (cwd: $(pwd)): \"${script_file_path}\""
|
||||
|
||||
found=$((found+1))
|
||||
run_as "${script_file_path}" || return_code="$?"
|
||||
|
||||
if [ "${return_code}" -ne "0" ]; then
|
||||
echo "==> Failed at executing \"${script_file_path}\". Exit code: ${return_code}"
|
||||
echo "==> Failed at executing script \"${script_file_path}\". Exit code: ${return_code}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "==> Finished the script: \"${script_file_path}\""
|
||||
echo "==> Finished executing the script: \"${script_file_path}\""
|
||||
done
|
||||
if [ "$found" -lt "1" ]; then
|
||||
echo "==> Skipped: the \"$1\" folder does not contain any valid scripts"
|
||||
else
|
||||
echo "=> Completed executing scripts in the \"$1\" folder"
|
||||
fi
|
||||
)
|
||||
}
|
||||
|
||||
|
@ -114,13 +121,21 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP
|
|||
# check if redis host is an unix socket path
|
||||
if [ "$(echo "$REDIS_HOST" | cut -c1-1)" = "/" ]; then
|
||||
if [ -n "${REDIS_HOST_PASSWORD+x}" ]; then
|
||||
echo "session.save_path = \"unix://${REDIS_HOST}?auth=${REDIS_HOST_PASSWORD}\""
|
||||
if [ -n "${REDIS_HOST_USER+x}" ]; then
|
||||
echo "session.save_path = \"unix://${REDIS_HOST}?auth[]=${REDIS_HOST_USER}&auth[]=${REDIS_HOST_PASSWORD}\""
|
||||
else
|
||||
echo "session.save_path = \"unix://${REDIS_HOST}?auth=${REDIS_HOST_PASSWORD}\""
|
||||
fi
|
||||
else
|
||||
echo "session.save_path = \"unix://${REDIS_HOST}\""
|
||||
fi
|
||||
# check if redis password has been set
|
||||
elif [ -n "${REDIS_HOST_PASSWORD+x}" ]; then
|
||||
echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth=${REDIS_HOST_PASSWORD}\""
|
||||
if [ -n "${REDIS_HOST_USER+x}" ]; then
|
||||
echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth[]=${REDIS_HOST_USER}&auth[]=${REDIS_HOST_PASSWORD}\""
|
||||
else
|
||||
echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth=${REDIS_HOST_PASSWORD}\""
|
||||
fi
|
||||
else
|
||||
echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}\""
|
||||
fi
|
||||
|
@ -237,12 +252,14 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP
|
|||
fi
|
||||
if [ -n "${NEXTCLOUD_TRUSTED_DOMAINS+x}" ]; then
|
||||
echo "Setting trusted domains…"
|
||||
set -f # turn off glob
|
||||
NC_TRUSTED_DOMAIN_IDX=1
|
||||
for DOMAIN in $NEXTCLOUD_TRUSTED_DOMAINS ; do
|
||||
DOMAIN=$(echo "$DOMAIN" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')
|
||||
run_as "php /var/www/html/occ config:system:set trusted_domains $NC_TRUSTED_DOMAIN_IDX --value=$DOMAIN"
|
||||
for DOMAIN in ${NEXTCLOUD_TRUSTED_DOMAINS}; do
|
||||
DOMAIN=$(echo "${DOMAIN}" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')
|
||||
run_as "php /var/www/html/occ config:system:set trusted_domains $NC_TRUSTED_DOMAIN_IDX --value=\"${DOMAIN}\""
|
||||
NC_TRUSTED_DOMAIN_IDX=$((NC_TRUSTED_DOMAIN_IDX+1))
|
||||
done
|
||||
set +f # turn glob back on
|
||||
fi
|
||||
|
||||
run_path post-installation
|
||||
|
|
|
@ -1,9 +1,6 @@
|
|||
# DO NOT EDIT: created by update.sh from Dockerfile-debian.template
|
||||
FROM php:8.3-apache-bookworm
|
||||
|
||||
# Define the commit hash for imagick as a variable
|
||||
ENV IMAGICK_COMMIT_HASH d7d3c24af1b4f599897408f1714600b69a56473b
|
||||
|
||||
# entrypoint.sh and cron.sh dependencies
|
||||
RUN set -ex; \
|
||||
\
|
||||
|
@ -68,23 +65,10 @@ RUN set -ex; \
|
|||
zip \
|
||||
; \
|
||||
\
|
||||
# The master version on the imagick repository is compatible with PHP 8.3. However, the PECL version is not updated yet.
|
||||
# As soon as it will get updated, we can switch back to the PECL version, instead of having this workaround.
|
||||
curl -fsSL -o imagick.tar.gz "https://github.com/Imagick/imagick/archive/$IMAGICK_COMMIT_HASH.tar.gz"; \
|
||||
tar -xzf imagick.tar.gz -C /tmp; \
|
||||
rm imagick.tar.gz; \
|
||||
cd "/tmp/imagick-$IMAGICK_COMMIT_HASH"; \
|
||||
sed -i "s/@PACKAGE_VERSION@/git-$(echo ${IMAGICK_COMMIT_HASH} | cut -c 1-7)/" php_imagick.h; \
|
||||
phpize; \
|
||||
./configure; \
|
||||
make; \
|
||||
make install; \
|
||||
cd; \
|
||||
rm -r "/tmp/imagick-$IMAGICK_COMMIT_HASH"; \
|
||||
\
|
||||
# pecl will claim success even if one install fails, so we need to perform each install separately
|
||||
pecl install APCu-5.1.24; \
|
||||
pecl install igbinary-3.2.16; \
|
||||
pecl install imagick-3.8.0; \
|
||||
pecl install memcached-3.3.0 \
|
||||
--configureoptions 'enable-memcached-igbinary="yes"'; \
|
||||
pecl install redis-6.2.0 \
|
||||
|
@ -166,7 +150,7 @@ RUN { \
|
|||
} > /etc/apache2/conf-available/apache-limits.conf; \
|
||||
a2enconf apache-limits
|
||||
|
||||
ENV NEXTCLOUD_VERSION 31.0.3
|
||||
ENV NEXTCLOUD_VERSION 31.0.4
|
||||
|
||||
RUN set -ex; \
|
||||
fetchDeps=" \
|
||||
|
@ -176,8 +160,8 @@ RUN set -ex; \
|
|||
apt-get update; \
|
||||
apt-get install -y --no-install-recommends $fetchDeps; \
|
||||
\
|
||||
curl -fsSL -o nextcloud.tar.bz2 "https://download.nextcloud.com/server/releases/nextcloud-31.0.3.tar.bz2"; \
|
||||
curl -fsSL -o nextcloud.tar.bz2.asc "https://download.nextcloud.com/server/releases/nextcloud-31.0.3.tar.bz2.asc"; \
|
||||
curl -fsSL -o nextcloud.tar.bz2 "https://download.nextcloud.com/server/releases/nextcloud-31.0.4.tar.bz2"; \
|
||||
curl -fsSL -o nextcloud.tar.bz2.asc "https://download.nextcloud.com/server/releases/nextcloud-31.0.4.tar.bz2.asc"; \
|
||||
export GNUPGHOME="$(mktemp -d)"; \
|
||||
# gpg key from https://nextcloud.com/nextcloud.asc
|
||||
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 28806A878AE423A28372792ED75899B9A724937A; \
|
||||
|
|
|
@ -23,32 +23,39 @@ run_as() {
|
|||
run_path() {
|
||||
local hook_folder_path="/docker-entrypoint-hooks.d/$1"
|
||||
local return_code=0
|
||||
local found=0
|
||||
|
||||
if ! [ -d "${hook_folder_path}" ]; then
|
||||
echo "=> Skipping the folder \"${hook_folder_path}\", because it doesn't exist"
|
||||
echo "=> Searching for hook scripts (*.sh) to run, located in the folder \"${hook_folder_path}\""
|
||||
|
||||
if ! [ -d "${hook_folder_path}" ] || directory_empty "${hook_folder_path}"; then
|
||||
echo "==> Skipped: the \"$1\" folder is empty (or does not exist)"
|
||||
return 0
|
||||
fi
|
||||
|
||||
echo "=> Searching for scripts (*.sh) to run, located in the folder: ${hook_folder_path}"
|
||||
|
||||
(
|
||||
find "${hook_folder_path}" -maxdepth 1 -iname '*.sh' '(' -type f -o -type l ')' -print | sort | while read -r script_file_path; do
|
||||
find "${hook_folder_path}" -maxdepth 1 -iname '*.sh' '(' -type f -o -type l ')' -print | sort | (
|
||||
while read -r script_file_path; do
|
||||
if ! [ -x "${script_file_path}" ]; then
|
||||
echo "==> The script \"${script_file_path}\" was skipped, because it didn't have the executable flag"
|
||||
echo "==> The script \"${script_file_path}\" was skipped, because it lacks the executable flag"
|
||||
found=$((found-1))
|
||||
continue
|
||||
fi
|
||||
|
||||
echo "==> Running the script (cwd: $(pwd)): \"${script_file_path}\""
|
||||
|
||||
found=$((found+1))
|
||||
run_as "${script_file_path}" || return_code="$?"
|
||||
|
||||
if [ "${return_code}" -ne "0" ]; then
|
||||
echo "==> Failed at executing \"${script_file_path}\". Exit code: ${return_code}"
|
||||
echo "==> Failed at executing script \"${script_file_path}\". Exit code: ${return_code}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "==> Finished the script: \"${script_file_path}\""
|
||||
echo "==> Finished executing the script: \"${script_file_path}\""
|
||||
done
|
||||
if [ "$found" -lt "1" ]; then
|
||||
echo "==> Skipped: the \"$1\" folder does not contain any valid scripts"
|
||||
else
|
||||
echo "=> Completed executing scripts in the \"$1\" folder"
|
||||
fi
|
||||
)
|
||||
}
|
||||
|
||||
|
@ -114,13 +121,21 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP
|
|||
# check if redis host is an unix socket path
|
||||
if [ "$(echo "$REDIS_HOST" | cut -c1-1)" = "/" ]; then
|
||||
if [ -n "${REDIS_HOST_PASSWORD+x}" ]; then
|
||||
echo "session.save_path = \"unix://${REDIS_HOST}?auth=${REDIS_HOST_PASSWORD}\""
|
||||
if [ -n "${REDIS_HOST_USER+x}" ]; then
|
||||
echo "session.save_path = \"unix://${REDIS_HOST}?auth[]=${REDIS_HOST_USER}&auth[]=${REDIS_HOST_PASSWORD}\""
|
||||
else
|
||||
echo "session.save_path = \"unix://${REDIS_HOST}?auth=${REDIS_HOST_PASSWORD}\""
|
||||
fi
|
||||
else
|
||||
echo "session.save_path = \"unix://${REDIS_HOST}\""
|
||||
fi
|
||||
# check if redis password has been set
|
||||
elif [ -n "${REDIS_HOST_PASSWORD+x}" ]; then
|
||||
echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth=${REDIS_HOST_PASSWORD}\""
|
||||
if [ -n "${REDIS_HOST_USER+x}" ]; then
|
||||
echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth[]=${REDIS_HOST_USER}&auth[]=${REDIS_HOST_PASSWORD}\""
|
||||
else
|
||||
echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth=${REDIS_HOST_PASSWORD}\""
|
||||
fi
|
||||
else
|
||||
echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}\""
|
||||
fi
|
||||
|
@ -237,12 +252,14 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP
|
|||
fi
|
||||
if [ -n "${NEXTCLOUD_TRUSTED_DOMAINS+x}" ]; then
|
||||
echo "Setting trusted domains…"
|
||||
set -f # turn off glob
|
||||
NC_TRUSTED_DOMAIN_IDX=1
|
||||
for DOMAIN in $NEXTCLOUD_TRUSTED_DOMAINS ; do
|
||||
DOMAIN=$(echo "$DOMAIN" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')
|
||||
run_as "php /var/www/html/occ config:system:set trusted_domains $NC_TRUSTED_DOMAIN_IDX --value=$DOMAIN"
|
||||
for DOMAIN in ${NEXTCLOUD_TRUSTED_DOMAINS}; do
|
||||
DOMAIN=$(echo "${DOMAIN}" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')
|
||||
run_as "php /var/www/html/occ config:system:set trusted_domains $NC_TRUSTED_DOMAIN_IDX --value=\"${DOMAIN}\""
|
||||
NC_TRUSTED_DOMAIN_IDX=$((NC_TRUSTED_DOMAIN_IDX+1))
|
||||
done
|
||||
set +f # turn glob back on
|
||||
fi
|
||||
|
||||
run_path post-installation
|
||||
|
|
|
@ -1,9 +1,6 @@
|
|||
# DO NOT EDIT: created by update.sh from Dockerfile-alpine.template
|
||||
FROM php:8.3-fpm-alpine3.21
|
||||
|
||||
# Define the commit hash for imagick as a variable
|
||||
ENV IMAGICK_COMMIT_HASH d7d3c24af1b4f599897408f1714600b69a56473b
|
||||
|
||||
# entrypoint.sh and cron.sh dependencies
|
||||
RUN set -ex; \
|
||||
\
|
||||
|
@ -65,23 +62,10 @@ RUN set -ex; \
|
|||
zip \
|
||||
; \
|
||||
\
|
||||
# The master version on the imagick repository is compatible with PHP 8.3. However, the PECL version is not updated yet.
|
||||
# As soon as it will get updated, we can switch back to the PECL version, instead of having this workaround.
|
||||
curl -fsSL -o imagick.tar.gz "https://github.com/Imagick/imagick/archive/$IMAGICK_COMMIT_HASH.tar.gz"; \
|
||||
tar -xzf imagick.tar.gz -C /tmp; \
|
||||
rm imagick.tar.gz; \
|
||||
cd "/tmp/imagick-$IMAGICK_COMMIT_HASH"; \
|
||||
sed -i "s/@PACKAGE_VERSION@/git-$(echo ${IMAGICK_COMMIT_HASH} | cut -c 1-7)/" php_imagick.h; \
|
||||
phpize; \
|
||||
./configure; \
|
||||
make; \
|
||||
make install; \
|
||||
cd; \
|
||||
rm -r "/tmp/imagick-$IMAGICK_COMMIT_HASH"; \
|
||||
\
|
||||
# pecl will claim success even if one install fails, so we need to perform each install separately
|
||||
pecl install APCu-5.1.24; \
|
||||
pecl install igbinary-3.2.16; \
|
||||
pecl install imagick-3.8.0; \
|
||||
pecl install memcached-3.3.0 \
|
||||
--configureoptions 'enable-memcached-igbinary="yes"'; \
|
||||
pecl install redis-6.2.0 \
|
||||
|
@ -146,7 +130,7 @@ RUN { \
|
|||
VOLUME /var/www/html
|
||||
|
||||
|
||||
ENV NEXTCLOUD_VERSION 31.0.3
|
||||
ENV NEXTCLOUD_VERSION 31.0.4
|
||||
|
||||
RUN set -ex; \
|
||||
apk add --no-cache --virtual .fetch-deps \
|
||||
|
@ -154,8 +138,8 @@ RUN set -ex; \
|
|||
gnupg \
|
||||
; \
|
||||
\
|
||||
curl -fsSL -o nextcloud.tar.bz2 "https://download.nextcloud.com/server/releases/nextcloud-31.0.3.tar.bz2"; \
|
||||
curl -fsSL -o nextcloud.tar.bz2.asc "https://download.nextcloud.com/server/releases/nextcloud-31.0.3.tar.bz2.asc"; \
|
||||
curl -fsSL -o nextcloud.tar.bz2 "https://download.nextcloud.com/server/releases/nextcloud-31.0.4.tar.bz2"; \
|
||||
curl -fsSL -o nextcloud.tar.bz2.asc "https://download.nextcloud.com/server/releases/nextcloud-31.0.4.tar.bz2.asc"; \
|
||||
export GNUPGHOME="$(mktemp -d)"; \
|
||||
# gpg key from https://nextcloud.com/nextcloud.asc
|
||||
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 28806A878AE423A28372792ED75899B9A724937A; \
|
||||
|
|
|
@ -23,32 +23,39 @@ run_as() {
|
|||
run_path() {
|
||||
local hook_folder_path="/docker-entrypoint-hooks.d/$1"
|
||||
local return_code=0
|
||||
local found=0
|
||||
|
||||
if ! [ -d "${hook_folder_path}" ]; then
|
||||
echo "=> Skipping the folder \"${hook_folder_path}\", because it doesn't exist"
|
||||
echo "=> Searching for hook scripts (*.sh) to run, located in the folder \"${hook_folder_path}\""
|
||||
|
||||
if ! [ -d "${hook_folder_path}" ] || directory_empty "${hook_folder_path}"; then
|
||||
echo "==> Skipped: the \"$1\" folder is empty (or does not exist)"
|
||||
return 0
|
||||
fi
|
||||
|
||||
echo "=> Searching for scripts (*.sh) to run, located in the folder: ${hook_folder_path}"
|
||||
|
||||
(
|
||||
find "${hook_folder_path}" -maxdepth 1 -iname '*.sh' '(' -type f -o -type l ')' -print | sort | while read -r script_file_path; do
|
||||
find "${hook_folder_path}" -maxdepth 1 -iname '*.sh' '(' -type f -o -type l ')' -print | sort | (
|
||||
while read -r script_file_path; do
|
||||
if ! [ -x "${script_file_path}" ]; then
|
||||
echo "==> The script \"${script_file_path}\" was skipped, because it didn't have the executable flag"
|
||||
echo "==> The script \"${script_file_path}\" was skipped, because it lacks the executable flag"
|
||||
found=$((found-1))
|
||||
continue
|
||||
fi
|
||||
|
||||
echo "==> Running the script (cwd: $(pwd)): \"${script_file_path}\""
|
||||
|
||||
found=$((found+1))
|
||||
run_as "${script_file_path}" || return_code="$?"
|
||||
|
||||
if [ "${return_code}" -ne "0" ]; then
|
||||
echo "==> Failed at executing \"${script_file_path}\". Exit code: ${return_code}"
|
||||
echo "==> Failed at executing script \"${script_file_path}\". Exit code: ${return_code}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "==> Finished the script: \"${script_file_path}\""
|
||||
echo "==> Finished executing the script: \"${script_file_path}\""
|
||||
done
|
||||
if [ "$found" -lt "1" ]; then
|
||||
echo "==> Skipped: the \"$1\" folder does not contain any valid scripts"
|
||||
else
|
||||
echo "=> Completed executing scripts in the \"$1\" folder"
|
||||
fi
|
||||
)
|
||||
}
|
||||
|
||||
|
@ -114,13 +121,21 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP
|
|||
# check if redis host is an unix socket path
|
||||
if [ "$(echo "$REDIS_HOST" | cut -c1-1)" = "/" ]; then
|
||||
if [ -n "${REDIS_HOST_PASSWORD+x}" ]; then
|
||||
echo "session.save_path = \"unix://${REDIS_HOST}?auth=${REDIS_HOST_PASSWORD}\""
|
||||
if [ -n "${REDIS_HOST_USER+x}" ]; then
|
||||
echo "session.save_path = \"unix://${REDIS_HOST}?auth[]=${REDIS_HOST_USER}&auth[]=${REDIS_HOST_PASSWORD}\""
|
||||
else
|
||||
echo "session.save_path = \"unix://${REDIS_HOST}?auth=${REDIS_HOST_PASSWORD}\""
|
||||
fi
|
||||
else
|
||||
echo "session.save_path = \"unix://${REDIS_HOST}\""
|
||||
fi
|
||||
# check if redis password has been set
|
||||
elif [ -n "${REDIS_HOST_PASSWORD+x}" ]; then
|
||||
echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth=${REDIS_HOST_PASSWORD}\""
|
||||
if [ -n "${REDIS_HOST_USER+x}" ]; then
|
||||
echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth[]=${REDIS_HOST_USER}&auth[]=${REDIS_HOST_PASSWORD}\""
|
||||
else
|
||||
echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth=${REDIS_HOST_PASSWORD}\""
|
||||
fi
|
||||
else
|
||||
echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}\""
|
||||
fi
|
||||
|
@ -237,12 +252,14 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP
|
|||
fi
|
||||
if [ -n "${NEXTCLOUD_TRUSTED_DOMAINS+x}" ]; then
|
||||
echo "Setting trusted domains…"
|
||||
set -f # turn off glob
|
||||
NC_TRUSTED_DOMAIN_IDX=1
|
||||
for DOMAIN in $NEXTCLOUD_TRUSTED_DOMAINS ; do
|
||||
DOMAIN=$(echo "$DOMAIN" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')
|
||||
run_as "php /var/www/html/occ config:system:set trusted_domains $NC_TRUSTED_DOMAIN_IDX --value=$DOMAIN"
|
||||
for DOMAIN in ${NEXTCLOUD_TRUSTED_DOMAINS}; do
|
||||
DOMAIN=$(echo "${DOMAIN}" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')
|
||||
run_as "php /var/www/html/occ config:system:set trusted_domains $NC_TRUSTED_DOMAIN_IDX --value=\"${DOMAIN}\""
|
||||
NC_TRUSTED_DOMAIN_IDX=$((NC_TRUSTED_DOMAIN_IDX+1))
|
||||
done
|
||||
set +f # turn glob back on
|
||||
fi
|
||||
|
||||
run_path post-installation
|
||||
|
|
|
@ -1,9 +1,6 @@
|
|||
# DO NOT EDIT: created by update.sh from Dockerfile-debian.template
|
||||
FROM php:8.3-fpm-bookworm
|
||||
|
||||
# Define the commit hash for imagick as a variable
|
||||
ENV IMAGICK_COMMIT_HASH d7d3c24af1b4f599897408f1714600b69a56473b
|
||||
|
||||
# entrypoint.sh and cron.sh dependencies
|
||||
RUN set -ex; \
|
||||
\
|
||||
|
@ -68,23 +65,10 @@ RUN set -ex; \
|
|||
zip \
|
||||
; \
|
||||
\
|
||||
# The master version on the imagick repository is compatible with PHP 8.3. However, the PECL version is not updated yet.
|
||||
# As soon as it will get updated, we can switch back to the PECL version, instead of having this workaround.
|
||||
curl -fsSL -o imagick.tar.gz "https://github.com/Imagick/imagick/archive/$IMAGICK_COMMIT_HASH.tar.gz"; \
|
||||
tar -xzf imagick.tar.gz -C /tmp; \
|
||||
rm imagick.tar.gz; \
|
||||
cd "/tmp/imagick-$IMAGICK_COMMIT_HASH"; \
|
||||
sed -i "s/@PACKAGE_VERSION@/git-$(echo ${IMAGICK_COMMIT_HASH} | cut -c 1-7)/" php_imagick.h; \
|
||||
phpize; \
|
||||
./configure; \
|
||||
make; \
|
||||
make install; \
|
||||
cd; \
|
||||
rm -r "/tmp/imagick-$IMAGICK_COMMIT_HASH"; \
|
||||
\
|
||||
# pecl will claim success even if one install fails, so we need to perform each install separately
|
||||
pecl install APCu-5.1.24; \
|
||||
pecl install igbinary-3.2.16; \
|
||||
pecl install imagick-3.8.0; \
|
||||
pecl install memcached-3.3.0 \
|
||||
--configureoptions 'enable-memcached-igbinary="yes"'; \
|
||||
pecl install redis-6.2.0 \
|
||||
|
@ -151,7 +135,7 @@ RUN { \
|
|||
VOLUME /var/www/html
|
||||
|
||||
|
||||
ENV NEXTCLOUD_VERSION 31.0.3
|
||||
ENV NEXTCLOUD_VERSION 31.0.4
|
||||
|
||||
RUN set -ex; \
|
||||
fetchDeps=" \
|
||||
|
@ -161,8 +145,8 @@ RUN set -ex; \
|
|||
apt-get update; \
|
||||
apt-get install -y --no-install-recommends $fetchDeps; \
|
||||
\
|
||||
curl -fsSL -o nextcloud.tar.bz2 "https://download.nextcloud.com/server/releases/nextcloud-31.0.3.tar.bz2"; \
|
||||
curl -fsSL -o nextcloud.tar.bz2.asc "https://download.nextcloud.com/server/releases/nextcloud-31.0.3.tar.bz2.asc"; \
|
||||
curl -fsSL -o nextcloud.tar.bz2 "https://download.nextcloud.com/server/releases/nextcloud-31.0.4.tar.bz2"; \
|
||||
curl -fsSL -o nextcloud.tar.bz2.asc "https://download.nextcloud.com/server/releases/nextcloud-31.0.4.tar.bz2.asc"; \
|
||||
export GNUPGHOME="$(mktemp -d)"; \
|
||||
# gpg key from https://nextcloud.com/nextcloud.asc
|
||||
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 28806A878AE423A28372792ED75899B9A724937A; \
|
||||
|
|
|
@ -23,32 +23,39 @@ run_as() {
|
|||
run_path() {
|
||||
local hook_folder_path="/docker-entrypoint-hooks.d/$1"
|
||||
local return_code=0
|
||||
local found=0
|
||||
|
||||
if ! [ -d "${hook_folder_path}" ]; then
|
||||
echo "=> Skipping the folder \"${hook_folder_path}\", because it doesn't exist"
|
||||
echo "=> Searching for hook scripts (*.sh) to run, located in the folder \"${hook_folder_path}\""
|
||||
|
||||
if ! [ -d "${hook_folder_path}" ] || directory_empty "${hook_folder_path}"; then
|
||||
echo "==> Skipped: the \"$1\" folder is empty (or does not exist)"
|
||||
return 0
|
||||
fi
|
||||
|
||||
echo "=> Searching for scripts (*.sh) to run, located in the folder: ${hook_folder_path}"
|
||||
|
||||
(
|
||||
find "${hook_folder_path}" -maxdepth 1 -iname '*.sh' '(' -type f -o -type l ')' -print | sort | while read -r script_file_path; do
|
||||
find "${hook_folder_path}" -maxdepth 1 -iname '*.sh' '(' -type f -o -type l ')' -print | sort | (
|
||||
while read -r script_file_path; do
|
||||
if ! [ -x "${script_file_path}" ]; then
|
||||
echo "==> The script \"${script_file_path}\" was skipped, because it didn't have the executable flag"
|
||||
echo "==> The script \"${script_file_path}\" was skipped, because it lacks the executable flag"
|
||||
found=$((found-1))
|
||||
continue
|
||||
fi
|
||||
|
||||
echo "==> Running the script (cwd: $(pwd)): \"${script_file_path}\""
|
||||
|
||||
found=$((found+1))
|
||||
run_as "${script_file_path}" || return_code="$?"
|
||||
|
||||
if [ "${return_code}" -ne "0" ]; then
|
||||
echo "==> Failed at executing \"${script_file_path}\". Exit code: ${return_code}"
|
||||
echo "==> Failed at executing script \"${script_file_path}\". Exit code: ${return_code}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "==> Finished the script: \"${script_file_path}\""
|
||||
echo "==> Finished executing the script: \"${script_file_path}\""
|
||||
done
|
||||
if [ "$found" -lt "1" ]; then
|
||||
echo "==> Skipped: the \"$1\" folder does not contain any valid scripts"
|
||||
else
|
||||
echo "=> Completed executing scripts in the \"$1\" folder"
|
||||
fi
|
||||
)
|
||||
}
|
||||
|
||||
|
@ -114,13 +121,21 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP
|
|||
# check if redis host is an unix socket path
|
||||
if [ "$(echo "$REDIS_HOST" | cut -c1-1)" = "/" ]; then
|
||||
if [ -n "${REDIS_HOST_PASSWORD+x}" ]; then
|
||||
echo "session.save_path = \"unix://${REDIS_HOST}?auth=${REDIS_HOST_PASSWORD}\""
|
||||
if [ -n "${REDIS_HOST_USER+x}" ]; then
|
||||
echo "session.save_path = \"unix://${REDIS_HOST}?auth[]=${REDIS_HOST_USER}&auth[]=${REDIS_HOST_PASSWORD}\""
|
||||
else
|
||||
echo "session.save_path = \"unix://${REDIS_HOST}?auth=${REDIS_HOST_PASSWORD}\""
|
||||
fi
|
||||
else
|
||||
echo "session.save_path = \"unix://${REDIS_HOST}\""
|
||||
fi
|
||||
# check if redis password has been set
|
||||
elif [ -n "${REDIS_HOST_PASSWORD+x}" ]; then
|
||||
echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth=${REDIS_HOST_PASSWORD}\""
|
||||
if [ -n "${REDIS_HOST_USER+x}" ]; then
|
||||
echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth[]=${REDIS_HOST_USER}&auth[]=${REDIS_HOST_PASSWORD}\""
|
||||
else
|
||||
echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth=${REDIS_HOST_PASSWORD}\""
|
||||
fi
|
||||
else
|
||||
echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}\""
|
||||
fi
|
||||
|
@ -237,12 +252,14 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP
|
|||
fi
|
||||
if [ -n "${NEXTCLOUD_TRUSTED_DOMAINS+x}" ]; then
|
||||
echo "Setting trusted domains…"
|
||||
set -f # turn off glob
|
||||
NC_TRUSTED_DOMAIN_IDX=1
|
||||
for DOMAIN in $NEXTCLOUD_TRUSTED_DOMAINS ; do
|
||||
DOMAIN=$(echo "$DOMAIN" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')
|
||||
run_as "php /var/www/html/occ config:system:set trusted_domains $NC_TRUSTED_DOMAIN_IDX --value=$DOMAIN"
|
||||
for DOMAIN in ${NEXTCLOUD_TRUSTED_DOMAINS}; do
|
||||
DOMAIN=$(echo "${DOMAIN}" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')
|
||||
run_as "php /var/www/html/occ config:system:set trusted_domains $NC_TRUSTED_DOMAIN_IDX --value=\"${DOMAIN}\""
|
||||
NC_TRUSTED_DOMAIN_IDX=$((NC_TRUSTED_DOMAIN_IDX+1))
|
||||
done
|
||||
set +f # turn glob back on
|
||||
fi
|
||||
|
||||
run_path post-installation
|
||||
|
|
|
@ -1,8 +1,5 @@
|
|||
FROM php:%%PHP_VERSION%%-%%VARIANT%%%%ALPINE_VERSION%%
|
||||
|
||||
# Define the commit hash for imagick as a variable
|
||||
ENV IMAGICK_COMMIT_HASH d7d3c24af1b4f599897408f1714600b69a56473b
|
||||
|
||||
# entrypoint.sh and cron.sh dependencies
|
||||
RUN set -ex; \
|
||||
\
|
||||
|
@ -64,23 +61,10 @@ RUN set -ex; \
|
|||
zip \
|
||||
; \
|
||||
\
|
||||
# The master version on the imagick repository is compatible with PHP 8.3. However, the PECL version is not updated yet.
|
||||
# As soon as it will get updated, we can switch back to the PECL version, instead of having this workaround.
|
||||
curl -fsSL -o imagick.tar.gz "https://github.com/Imagick/imagick/archive/$IMAGICK_COMMIT_HASH.tar.gz"; \
|
||||
tar -xzf imagick.tar.gz -C /tmp; \
|
||||
rm imagick.tar.gz; \
|
||||
cd "/tmp/imagick-$IMAGICK_COMMIT_HASH"; \
|
||||
sed -i "s/@PACKAGE_VERSION@/git-$(echo ${IMAGICK_COMMIT_HASH} | cut -c 1-7)/" php_imagick.h; \
|
||||
phpize; \
|
||||
./configure; \
|
||||
make; \
|
||||
make install; \
|
||||
cd; \
|
||||
rm -r "/tmp/imagick-$IMAGICK_COMMIT_HASH"; \
|
||||
\
|
||||
# pecl will claim success even if one install fails, so we need to perform each install separately
|
||||
pecl install APCu-%%APCU_VERSION%%; \
|
||||
pecl install igbinary-%%IGBINARY_VERSION%%; \
|
||||
pecl install imagick-%%IMAGICK_VERSION%%; \
|
||||
pecl install memcached-%%MEMCACHED_VERSION%% \
|
||||
--configureoptions 'enable-memcached-igbinary="yes"'; \
|
||||
pecl install redis-%%REDIS_VERSION%% \
|
||||
|
|
|
@ -1,8 +1,5 @@
|
|||
FROM php:%%PHP_VERSION%%-%%VARIANT%%-%%DEBIAN_VERSION%%
|
||||
|
||||
# Define the commit hash for imagick as a variable
|
||||
ENV IMAGICK_COMMIT_HASH d7d3c24af1b4f599897408f1714600b69a56473b
|
||||
|
||||
# entrypoint.sh and cron.sh dependencies
|
||||
RUN set -ex; \
|
||||
\
|
||||
|
@ -67,23 +64,10 @@ RUN set -ex; \
|
|||
zip \
|
||||
; \
|
||||
\
|
||||
# The master version on the imagick repository is compatible with PHP 8.3. However, the PECL version is not updated yet.
|
||||
# As soon as it will get updated, we can switch back to the PECL version, instead of having this workaround.
|
||||
curl -fsSL -o imagick.tar.gz "https://github.com/Imagick/imagick/archive/$IMAGICK_COMMIT_HASH.tar.gz"; \
|
||||
tar -xzf imagick.tar.gz -C /tmp; \
|
||||
rm imagick.tar.gz; \
|
||||
cd "/tmp/imagick-$IMAGICK_COMMIT_HASH"; \
|
||||
sed -i "s/@PACKAGE_VERSION@/git-$(echo ${IMAGICK_COMMIT_HASH} | cut -c 1-7)/" php_imagick.h; \
|
||||
phpize; \
|
||||
./configure; \
|
||||
make; \
|
||||
make install; \
|
||||
cd; \
|
||||
rm -r "/tmp/imagick-$IMAGICK_COMMIT_HASH"; \
|
||||
\
|
||||
# pecl will claim success even if one install fails, so we need to perform each install separately
|
||||
pecl install APCu-%%APCU_VERSION%%; \
|
||||
pecl install igbinary-%%IGBINARY_VERSION%%; \
|
||||
pecl install imagick-%%IMAGICK_VERSION%%; \
|
||||
pecl install memcached-%%MEMCACHED_VERSION%% \
|
||||
--configureoptions 'enable-memcached-igbinary="yes"'; \
|
||||
pecl install redis-%%REDIS_VERSION%% \
|
||||
|
|
67
README.md
67
README.md
|
@ -31,8 +31,8 @@ Most Nextcloud Server administrative matters are covered in the official [Nextcl
|
|||
[](https://help.nextcloud.com/)
|
||||
[](https://help.nextcloud.com/)
|
||||
|
||||
**If you have any problems or usage questions while using the image, please ask for assistance on the [Nextcloud Community Help Forum](https://help.nextcloud.com)** rather than reporting them as "bugs" (unless they are bugs of course). This helps the
|
||||
maintainers (who are volunteers) remain focused on making the image better (rather than responding solely to one-on-one support issues). (Tip: Some of the maintainers are also regular responders to help requests
|
||||
**If you have any problems or usage questions while using the image, please ask for assistance on the [Nextcloud Community Help Forum](https://help.nextcloud.com)** rather than reporting them as "bugs" (unless they are bugs of course). This helps the
|
||||
maintainers (who are volunteers) remain focused on making the image better (rather than responding solely to one-on-one support issues). (Tip: Some of the maintainers are also regular responders to help requests
|
||||
on the [community help forum](https://help.nextcloud.com/).)
|
||||
|
||||
For the image specifically, we provide [some simple deployment examples](https://github.com/nextcloud/docker/?tab=readme-ov-file#running-this-image-with-docker-compose) as well as some more extensive [deployment examples](https://github.com/nextcloud/docker/tree/master/.examples). In addition, the [community help forum](https://help.nextcloud.com/) has a "how-to" section with further examples of other peoples' container based Nextcloud stacks.
|
||||
|
@ -82,7 +82,7 @@ Database:
|
|||
```console
|
||||
$ docker run -d \
|
||||
-v db:/var/lib/mysql \
|
||||
mariadb:10.11
|
||||
mariadb:lts
|
||||
```
|
||||
|
||||
### Additional volumes
|
||||
|
@ -183,11 +183,11 @@ The `--private` flag can also be specified, in order to output all configuration
|
|||
|
||||
## Auto configuration via environment variables
|
||||
|
||||
The Nextcloud image supports auto configuration of the Nextcloud Server installation via environment variables. You can preconfigure everything that would otherwise be prompted for by the Nextcloud Installation Wizard (as well as a few other key parameters relevant to initial installation).
|
||||
The Nextcloud image supports auto configuration of the Nextcloud Server installation via environment variables. You can preconfigure everything that would otherwise be prompted for by the Nextcloud Installation Wizard (as well as a few other key parameters relevant to initial installation).
|
||||
|
||||
### Database parameters
|
||||
|
||||
To enable auto configuration, define your database connection via the following environment variables. If you set any group of values (i.e. all of `MYSQL_DATABASE`, `MYSQL_USER`, `MYSQL_PASSWORD`, `MYSQL_HOST`), they will not be requested via the Installation Wizard on first run.
|
||||
To enable auto configuration, define your database connection via the following environment variables. If you set any group of values (i.e. all of `MYSQL_DATABASE`, `MYSQL_USER`, `MYSQL_PASSWORD`, `MYSQL_HOST`), they will not be requested via the Installation Wizard on first run.
|
||||
|
||||
You must specify all of the environment variables for a given database or the database environment variables defaults to SQLITE. ONLY use one database type!
|
||||
|
||||
|
@ -271,8 +271,8 @@ Check the [Nextcloud documentation](https://docs.nextcloud.com/server/latest/adm
|
|||
|
||||
### Object Storage (Primary Storage)
|
||||
|
||||
By default, Nextcloud stores all files in `/var/www/html/data/` (or whatever custom data directory you've configured). Nextcloud also allows the use of object storages (like OpenStack
|
||||
Swift or any Amazon S3-compatible implementation) as *Primary Storage*. This semi-replaces the default storage of files in the data directory. Note: This data directory might still be
|
||||
By default, Nextcloud stores all files in `/var/www/html/data/` (or whatever custom data directory you've configured). Nextcloud also allows the use of object storages (like OpenStack
|
||||
Swift or any Amazon S3-compatible implementation) as *Primary Storage*. This semi-replaces the default storage of files in the data directory. Note: This data directory might still be
|
||||
used for compatibility reasons and still needs to exist. Check the [Nextcloud documentation](https://docs.nextcloud.com/server/latest/admin_manual/configuration_files/primary_storage.html) for more information.
|
||||
|
||||
To use an external S3 compatible object store as primary storage, set the following variables:
|
||||
|
@ -289,6 +289,15 @@ To use an external S3 compatible object store as primary storage, set the follow
|
|||
- `OBJECTSTORE_S3_OBJECT_PREFIX` (default: `urn:oid:`): Prefix to prepend to the fileid
|
||||
- `OBJECTSTORE_S3_AUTOCREATE` (default: `true`): Create the container if it does not exist
|
||||
- `OBJECTSTORE_S3_SSE_C_KEY` (not set by default): Base64 encoded key with a maximum length of 32 bytes for server side encryption (SSE-C)
|
||||
- `OBJECTSTORE_S3_CONCURRENCY` defines the maximum number of concurrent multipart uploads
|
||||
- `OBJECTSTORE_S3_PROXY` (default: `false`)
|
||||
- `OBJECTSTORE_S3_TIMEOUT` (not set by default)
|
||||
- `OBJECTSTORE_S3_UPLOADPARTSIZE` (not set by default)
|
||||
- `OBJECTSTORE_S3_PUTSIZELIMIT` (not set by default)
|
||||
- `OBJECTSTORE_S3_USEMULTIPARTCOPY` (default: `false`)
|
||||
- `OBJECTSTORE_S3_COPYSIZELIMIT` (not set by default)
|
||||
- `OBJECTSTORE_S3_VERSION` (default: `latest`)
|
||||
- `OBJECTSTORE_S3_VERIFY_BUCKET_EXISTS` (default: `true`) Setting this to `false` after confirming the bucket has been created may provide a performance benefit, but may not be possible in multibucket scenarios.
|
||||
|
||||
Check the [Nextcloud documentation](https://docs.nextcloud.com/server/latest/admin_manual/configuration_files/primary_storage.html#simple-storage-service-s3) for more information.
|
||||
|
||||
|
@ -403,8 +412,11 @@ Make sure to pass in values for `MYSQL_ROOT_PASSWORD` and `MYSQL_PASSWORD` varia
|
|||
|
||||
```yaml
|
||||
services:
|
||||
# Note: MariaDB is external service. You can find more information about the configuration here:
|
||||
# https://hub.docker.com/_/mariadb
|
||||
db:
|
||||
image: mariadb:10.11
|
||||
# Note: Check the recommend version here: https://docs.nextcloud.com/server/latest/admin_manual/installation/system_requirements.html#server
|
||||
image: mariadb:lts
|
||||
restart: always
|
||||
command: --transaction-isolation=READ-COMMITTED
|
||||
volumes:
|
||||
|
@ -415,6 +427,8 @@ services:
|
|||
- MYSQL_DATABASE=nextcloud
|
||||
- MYSQL_USER=nextcloud
|
||||
|
||||
# Note: Redis is an external service. You can find more information about the configuration here:
|
||||
# https://hub.docker.com/_/redis
|
||||
redis:
|
||||
image: redis:alpine
|
||||
restart: always
|
||||
|
@ -451,8 +465,11 @@ Make sure to pass in values for `MYSQL_ROOT_PASSWORD` and `MYSQL_PASSWORD` varia
|
|||
|
||||
```yaml
|
||||
services:
|
||||
# Note: MariaDB is an external service. You can find more information about the configuration here:
|
||||
# https://hub.docker.com/_/mariadb
|
||||
db:
|
||||
image: mariadb:10.11
|
||||
# Note: Check the recommend version here: https://docs.nextcloud.com/server/latest/admin_manual/installation/system_requirements.html#server
|
||||
image: mariadb:lts
|
||||
restart: always
|
||||
command: --transaction-isolation=READ-COMMITTED
|
||||
volumes:
|
||||
|
@ -463,6 +480,8 @@ services:
|
|||
- MYSQL_DATABASE=nextcloud
|
||||
- MYSQL_USER=nextcloud
|
||||
|
||||
# Note: Redis is an external service. You can find more information about the configuration here:
|
||||
# https://hub.docker.com/_/redis
|
||||
redis:
|
||||
image: redis:alpine
|
||||
restart: always
|
||||
|
@ -481,15 +500,18 @@ services:
|
|||
- MYSQL_USER=nextcloud
|
||||
- MYSQL_HOST=db
|
||||
|
||||
# Note: Nginx is an external service. You can find more information about the configuration here:
|
||||
# https://hub.docker.com/_/nginx/
|
||||
web:
|
||||
image: nginx
|
||||
image: nginx:alpine-slim
|
||||
restart: always
|
||||
ports:
|
||||
- 8080:80
|
||||
depends_on:
|
||||
- app
|
||||
volumes:
|
||||
- ./nginx.conf:/etc/nginx/nginx.conf:ro
|
||||
# https://docs.nextcloud.com/server/latest/admin_manual/installation/nginx.html
|
||||
- ./nginx.conf:/etc/nginx/nginx.conf:ro
|
||||
volumes_from:
|
||||
- app
|
||||
|
||||
|
@ -502,9 +524,9 @@ Then run `docker compose up -d`, now you can access Nextcloud at http://localhos
|
|||
|
||||
# Docker Secrets
|
||||
|
||||
As an alternative to passing sensitive information via environment variables, `_FILE` may be appended to some the previously listed environment variables, causing the initialization script to load the values for those variables from files present in the container. In particular, this can be used to load passwords from Docker secrets stored in `/run/secrets/<secret_name>` files.
|
||||
As an alternative to passing sensitive information via environment variables, `_FILE` may be appended to some the previously listed environment variables, causing the initialization script to load the values for those variables from files present in the container. In particular, this can be used to load passwords from Docker secrets stored in `/run/secrets/<secret_name>` files.
|
||||
|
||||
Currently, this is only supported for `NEXTCLOUD_ADMIN_PASSWORD`, `NEXTCLOUD_ADMIN_USER`, `MYSQL_DATABASE`, `MYSQL_PASSWORD`, `MYSQL_USER`, `POSTGRES_DB`, `POSTGRES_PASSWORD`, `POSTGRES_USER`, `REDIS_HOST_PASSWORD`, `SMTP_PASSWORD`, `OBJECTSTORE_S3_KEY`, and `OBJECTSTORE_S3_SECRET`.
|
||||
Currently, this is only supported for `NEXTCLOUD_ADMIN_PASSWORD`, `NEXTCLOUD_ADMIN_USER`, `MYSQL_DATABASE`, `MYSQL_PASSWORD`, `MYSQL_USER`, `POSTGRES_DB`, `POSTGRES_PASSWORD`, `POSTGRES_USER`, `REDIS_HOST_PASSWORD`, `SMTP_PASSWORD`, `OBJECTSTORE_S3_KEY`, and `OBJECTSTORE_S3_SECRET`.
|
||||
|
||||
If you set any group of `_FILE` based values (i.e. all of `MYSQL_DATABASE_FILE`, `MYSQL_USER_FILE`, `MYSQL_PASSWORD_FILE`), their non-`_FILE` counterparts will be ignored (`MYSQL_DATABASE`, `MYSQL_USER`, `MYSQL_PASSWORD`).
|
||||
|
||||
|
@ -514,8 +536,11 @@ Example:
|
|||
|
||||
```yaml
|
||||
services:
|
||||
# Note: PostgreSQL is external service. You can find more information about the configuration here:
|
||||
# https://hub.docker.com/_/postgres
|
||||
db:
|
||||
image: postgres
|
||||
# Note: Check the recommend version here: https://docs.nextcloud.com/server/latest/admin_manual/installation/system_requirements.html#server
|
||||
image: postgres:alpine
|
||||
restart: always
|
||||
volumes:
|
||||
- db:/var/lib/postgresql/data
|
||||
|
@ -527,6 +552,8 @@ services:
|
|||
- postgres_db
|
||||
- postgres_password
|
||||
- postgres_user
|
||||
# Note: Redis is an external service. You can find more information about the configuration here:
|
||||
# https://hub.docker.com/_/redis
|
||||
redis:
|
||||
image: redis:alpine
|
||||
restart: always
|
||||
|
@ -583,7 +610,7 @@ We recommend using a reverse proxy in front of your Nextcloud installation. Your
|
|||
In our [examples](https://github.com/nextcloud/docker/tree/master/.examples) section we have an example for a fully automated setup using a reverse proxy, a container for [Let's Encrypt](https://letsencrypt.org/) certificate handling, database and Nextcloud. It uses the popular [nginx-proxy](https://github.com/nginx-proxy/nginx-proxy) and [acme-companion](https://github.com/nginx-proxy/acme-companion) containers. Please check the according documentations before using this setup.
|
||||
|
||||
# First use
|
||||
When you first access your Nextcloud, the setup wizard will appear and ask you to choose an administrator account username, password and the database connection (unless of course you've provided all the necessary auto-config config values ahead of time).
|
||||
When you first access your Nextcloud, the setup wizard will appear and ask you to choose an administrator account username, password and the database connection (unless of course you've provided all the necessary auto-config config values ahead of time).
|
||||
|
||||
For the database use `db` as host and `nextcloud` as table and user name. Also enter the password you chose in your `compose.yaml` file.
|
||||
|
||||
|
@ -740,7 +767,7 @@ You're already using Nextcloud and want to switch to docker? Great! Here are som
|
|||
|
||||
## Migrating from a non-Alpine image to an Alpine image
|
||||
|
||||
If you already use one of our non-Alpine images, but want to switch to an Alpine-based image, you may experience permissions problems with your existing volumes. This is because the Alpine images uses a different user ID for `www-data`.
|
||||
If you already use one of our non-Alpine images, but want to switch to an Alpine-based image, you may experience permissions problems with your existing volumes. This is because the Alpine images uses a different user ID for `www-data`.
|
||||
So, you must change the ownership of the `/var/www/html` (or `$NEXTCLOUD_DATA_DIR`) folder to be compatible with Alpine:
|
||||
|
||||
```console
|
||||
|
@ -751,9 +778,9 @@ After changing the permissions, restart the container and the permission errors
|
|||
|
||||
# Reporting bugs or suggesting enhancements
|
||||
|
||||
If you believe you've found a bug in the image itself (or have an enhancement idea specific to the image), please [search for already reported bugs and enhancement ideas](https://github.com/nextcloud/docker/issues).
|
||||
If you believe you've found a bug in the image itself (or have an enhancement idea specific to the image), please [search for already reported bugs and enhancement ideas](https://github.com/nextcloud/docker/issues).
|
||||
|
||||
If there is a relevant existing open issue, you can either add to the discussion there or upvote it to indicate you're impacted by (or interested in) the same issue.
|
||||
If there is a relevant existing open issue, you can either add to the discussion there or upvote it to indicate you're impacted by (or interested in) the same issue.
|
||||
|
||||
If you believe you've found a new bug, please create a new Issue so that others can try to reproduce it and remediation can be tracked.
|
||||
|
||||
|
@ -762,8 +789,8 @@ If you believe you've found a new bug, please create a new Issue so that others
|
|||

|
||||

|
||||
|
||||
**If you have any problems or usage questions while using the image, please ask for assistance on the [Nextcloud Community Help Forum](https://help.nextcloud.com)** rather than reporting them as "bugs" (unless they really are bugs of course). This helps the
|
||||
maintainers (who are volunteers) remain focused on making the image better (rather than responding solely to one-on-one support issues). (Tip: Some of the maintainers are also regular responders to help requests
|
||||
**If you have any problems or usage questions while using the image, please ask for assistance on the [Nextcloud Community Help Forum](https://help.nextcloud.com)** rather than reporting them as "bugs" (unless they really are bugs of course). This helps the
|
||||
maintainers (who are volunteers) remain focused on making the image better (rather than responding solely to one-on-one support issues). (Tip: Some of the maintainers are also regular responders to help requests
|
||||
on the [Nextcloud Community Help Forum](https://help.nextcloud.com).)
|
||||
|
||||
[](https://help.nextcloud.com/)
|
||||
|
|
|
@ -23,32 +23,39 @@ run_as() {
|
|||
run_path() {
|
||||
local hook_folder_path="/docker-entrypoint-hooks.d/$1"
|
||||
local return_code=0
|
||||
local found=0
|
||||
|
||||
if ! [ -d "${hook_folder_path}" ]; then
|
||||
echo "=> Skipping the folder \"${hook_folder_path}\", because it doesn't exist"
|
||||
echo "=> Searching for hook scripts (*.sh) to run, located in the folder \"${hook_folder_path}\""
|
||||
|
||||
if ! [ -d "${hook_folder_path}" ] || directory_empty "${hook_folder_path}"; then
|
||||
echo "==> Skipped: the \"$1\" folder is empty (or does not exist)"
|
||||
return 0
|
||||
fi
|
||||
|
||||
echo "=> Searching for scripts (*.sh) to run, located in the folder: ${hook_folder_path}"
|
||||
|
||||
(
|
||||
find "${hook_folder_path}" -maxdepth 1 -iname '*.sh' '(' -type f -o -type l ')' -print | sort | while read -r script_file_path; do
|
||||
find "${hook_folder_path}" -maxdepth 1 -iname '*.sh' '(' -type f -o -type l ')' -print | sort | (
|
||||
while read -r script_file_path; do
|
||||
if ! [ -x "${script_file_path}" ]; then
|
||||
echo "==> The script \"${script_file_path}\" was skipped, because it didn't have the executable flag"
|
||||
echo "==> The script \"${script_file_path}\" was skipped, because it lacks the executable flag"
|
||||
found=$((found-1))
|
||||
continue
|
||||
fi
|
||||
|
||||
echo "==> Running the script (cwd: $(pwd)): \"${script_file_path}\""
|
||||
|
||||
found=$((found+1))
|
||||
run_as "${script_file_path}" || return_code="$?"
|
||||
|
||||
if [ "${return_code}" -ne "0" ]; then
|
||||
echo "==> Failed at executing \"${script_file_path}\". Exit code: ${return_code}"
|
||||
echo "==> Failed at executing script \"${script_file_path}\". Exit code: ${return_code}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "==> Finished the script: \"${script_file_path}\""
|
||||
echo "==> Finished executing the script: \"${script_file_path}\""
|
||||
done
|
||||
if [ "$found" -lt "1" ]; then
|
||||
echo "==> Skipped: the \"$1\" folder does not contain any valid scripts"
|
||||
else
|
||||
echo "=> Completed executing scripts in the \"$1\" folder"
|
||||
fi
|
||||
)
|
||||
}
|
||||
|
||||
|
@ -114,13 +121,21 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP
|
|||
# check if redis host is an unix socket path
|
||||
if [ "$(echo "$REDIS_HOST" | cut -c1-1)" = "/" ]; then
|
||||
if [ -n "${REDIS_HOST_PASSWORD+x}" ]; then
|
||||
echo "session.save_path = \"unix://${REDIS_HOST}?auth=${REDIS_HOST_PASSWORD}\""
|
||||
if [ -n "${REDIS_HOST_USER+x}" ]; then
|
||||
echo "session.save_path = \"unix://${REDIS_HOST}?auth[]=${REDIS_HOST_USER}&auth[]=${REDIS_HOST_PASSWORD}\""
|
||||
else
|
||||
echo "session.save_path = \"unix://${REDIS_HOST}?auth=${REDIS_HOST_PASSWORD}\""
|
||||
fi
|
||||
else
|
||||
echo "session.save_path = \"unix://${REDIS_HOST}\""
|
||||
fi
|
||||
# check if redis password has been set
|
||||
elif [ -n "${REDIS_HOST_PASSWORD+x}" ]; then
|
||||
echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth=${REDIS_HOST_PASSWORD}\""
|
||||
if [ -n "${REDIS_HOST_USER+x}" ]; then
|
||||
echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth[]=${REDIS_HOST_USER}&auth[]=${REDIS_HOST_PASSWORD}\""
|
||||
else
|
||||
echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth=${REDIS_HOST_PASSWORD}\""
|
||||
fi
|
||||
else
|
||||
echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}\""
|
||||
fi
|
||||
|
@ -237,12 +252,14 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP
|
|||
fi
|
||||
if [ -n "${NEXTCLOUD_TRUSTED_DOMAINS+x}" ]; then
|
||||
echo "Setting trusted domains…"
|
||||
set -f # turn off glob
|
||||
NC_TRUSTED_DOMAIN_IDX=1
|
||||
for DOMAIN in $NEXTCLOUD_TRUSTED_DOMAINS ; do
|
||||
DOMAIN=$(echo "$DOMAIN" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')
|
||||
run_as "php /var/www/html/occ config:system:set trusted_domains $NC_TRUSTED_DOMAIN_IDX --value=$DOMAIN"
|
||||
for DOMAIN in ${NEXTCLOUD_TRUSTED_DOMAINS}; do
|
||||
DOMAIN=$(echo "${DOMAIN}" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')
|
||||
run_as "php /var/www/html/occ config:system:set trusted_domains $NC_TRUSTED_DOMAIN_IDX --value=\"${DOMAIN}\""
|
||||
NC_TRUSTED_DOMAIN_IDX=$((NC_TRUSTED_DOMAIN_IDX+1))
|
||||
done
|
||||
set +f # turn glob back on
|
||||
fi
|
||||
|
||||
run_path post-installation
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#!/usr/bin/env bash
|
||||
set -Eeuo pipefail
|
||||
|
||||
stable_channel='30.0.9'
|
||||
stable_channel='31.0.4'
|
||||
|
||||
self="$(basename "$BASH_SOURCE")"
|
||||
cd "$(dirname "$(readlink -f "$BASH_SOURCE")")"
|
||||
|
|
|
@ -1 +1 @@
|
|||
31.0.3
|
||||
31.0.4
|
||||
|
|
|
@ -10,8 +10,8 @@ declare -A debian_version=(
|
|||
)
|
||||
|
||||
declare -A php_version=(
|
||||
[default]='8.2'
|
||||
[31]='8.3'
|
||||
[29]='8.2'
|
||||
[default]='8.3'
|
||||
)
|
||||
|
||||
declare -A cmd=(
|
||||
|
@ -55,7 +55,7 @@ igbinary_version="$(
|
|||
)"
|
||||
|
||||
imagick_version="$(
|
||||
git ls-remote --tags https://github.com/mkoppanen/imagick.git \
|
||||
git ls-remote --tags https://github.com/imagick/imagick.git \
|
||||
| cut -d/ -f3 \
|
||||
| grep -viE '[a-z]' \
|
||||
| tr -d '^{}' \
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
{
|
||||
"31": {
|
||||
"branch": "31",
|
||||
"version": "31.0.3",
|
||||
"url": "https://download.nextcloud.com/server/releases/nextcloud-31.0.3.tar.bz2",
|
||||
"ascUrl": "https://download.nextcloud.com/server/releases/nextcloud-31.0.3.tar.bz2.asc",
|
||||
"version": "31.0.4",
|
||||
"url": "https://download.nextcloud.com/server/releases/nextcloud-31.0.4.tar.bz2",
|
||||
"ascUrl": "https://download.nextcloud.com/server/releases/nextcloud-31.0.4.tar.bz2.asc",
|
||||
"variants": {
|
||||
"apache": {
|
||||
"variant": "apache",
|
||||
|
@ -27,35 +27,35 @@
|
|||
},
|
||||
"30": {
|
||||
"branch": "30",
|
||||
"version": "30.0.9",
|
||||
"url": "https://download.nextcloud.com/server/releases/nextcloud-30.0.9.tar.bz2",
|
||||
"ascUrl": "https://download.nextcloud.com/server/releases/nextcloud-30.0.9.tar.bz2.asc",
|
||||
"version": "30.0.10",
|
||||
"url": "https://download.nextcloud.com/server/releases/nextcloud-30.0.10.tar.bz2",
|
||||
"ascUrl": "https://download.nextcloud.com/server/releases/nextcloud-30.0.10.tar.bz2.asc",
|
||||
"variants": {
|
||||
"apache": {
|
||||
"variant": "apache",
|
||||
"base": "debian",
|
||||
"baseVersion": "bookworm",
|
||||
"phpVersion": "8.2"
|
||||
"phpVersion": "8.3"
|
||||
},
|
||||
"fpm": {
|
||||
"variant": "fpm",
|
||||
"base": "debian",
|
||||
"baseVersion": "bookworm",
|
||||
"phpVersion": "8.2"
|
||||
"phpVersion": "8.3"
|
||||
},
|
||||
"fpm-alpine": {
|
||||
"variant": "fpm-alpine",
|
||||
"base": "alpine",
|
||||
"baseVersion": "3.21",
|
||||
"phpVersion": "8.2"
|
||||
"phpVersion": "8.3"
|
||||
}
|
||||
}
|
||||
},
|
||||
"29": {
|
||||
"branch": "29",
|
||||
"version": "29.0.15",
|
||||
"url": "https://download.nextcloud.com/server/releases/nextcloud-29.0.15.tar.bz2",
|
||||
"ascUrl": "https://download.nextcloud.com/server/releases/nextcloud-29.0.15.tar.bz2.asc",
|
||||
"version": "29.0.16",
|
||||
"url": "https://download.nextcloud.com/server/releases/nextcloud-29.0.16.tar.bz2",
|
||||
"ascUrl": "https://download.nextcloud.com/server/releases/nextcloud-29.0.16.tar.bz2.asc",
|
||||
"variants": {
|
||||
"apache": {
|
||||
"variant": "apache",
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue