mirror of
https://github.com/nextcloud/docker.git
synced 2025-07-18 05:38:04 +02:00
Compare commits
1 commit
340ea04dec
...
b706142747
Author | SHA1 | Date | |
---|---|---|---|
|
b706142747 |
44 changed files with 429 additions and 516 deletions
|
@ -1,9 +1,6 @@
|
||||||
services:
|
services:
|
||||||
# Note: MariaDB is an external service. You can find more information about the configuration here:
|
|
||||||
# https://hub.docker.com/_/mariadb
|
|
||||||
db:
|
db:
|
||||||
# Note: Check the recommend version here: https://docs.nextcloud.com/server/latest/admin_manual/installation/system_requirements.html#server
|
image: mariadb:10.11
|
||||||
image: mariadb:lts
|
|
||||||
command: --transaction-isolation=READ-COMMITTED
|
command: --transaction-isolation=READ-COMMITTED
|
||||||
restart: always
|
restart: always
|
||||||
volumes:
|
volumes:
|
||||||
|
@ -15,8 +12,6 @@ services:
|
||||||
env_file:
|
env_file:
|
||||||
- db.env
|
- db.env
|
||||||
|
|
||||||
# Note: Redis is an external service. You can find more information about the configuration here:
|
|
||||||
# https://hub.docker.com/_/redis
|
|
||||||
redis:
|
redis:
|
||||||
image: redis:alpine
|
image: redis:alpine
|
||||||
restart: always
|
restart: always
|
||||||
|
|
|
@ -1,9 +1,6 @@
|
||||||
services:
|
services:
|
||||||
# Note: MariaDB is an external service. You can find more information about the configuration here:
|
|
||||||
# https://hub.docker.com/_/mariadb
|
|
||||||
db:
|
db:
|
||||||
# Note: Check the recommend version here: https://docs.nextcloud.com/server/latest/admin_manual/installation/system_requirements.html#server
|
image: mariadb:10.11
|
||||||
image: mariadb:lts
|
|
||||||
command: --transaction-isolation=READ-COMMITTED
|
command: --transaction-isolation=READ-COMMITTED
|
||||||
restart: always
|
restart: always
|
||||||
volumes:
|
volumes:
|
||||||
|
@ -15,8 +12,6 @@ services:
|
||||||
env_file:
|
env_file:
|
||||||
- db.env
|
- db.env
|
||||||
|
|
||||||
# Note: Redis is an external service. You can find more information about the configuration here:
|
|
||||||
# https://hub.docker.com/_/redis
|
|
||||||
redis:
|
redis:
|
||||||
image: redis:alpine
|
image: redis:alpine
|
||||||
restart: always
|
restart: always
|
||||||
|
@ -36,18 +31,14 @@ services:
|
||||||
- db
|
- db
|
||||||
- redis
|
- redis
|
||||||
|
|
||||||
# Note: Nginx is an external service. You can find more information about the configuration here:
|
|
||||||
# https://hub.docker.com/_/nginx/
|
|
||||||
web:
|
web:
|
||||||
image: nginx:alpine-slim
|
build: ./web
|
||||||
restart: always
|
restart: always
|
||||||
ports:
|
ports:
|
||||||
- 127.0.0.1:8080:80
|
- 127.0.0.1:8080:80
|
||||||
volumes:
|
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
|
- 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:
|
depends_on:
|
||||||
- app
|
- app
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
FROM nginx:alpine
|
||||||
|
|
||||||
|
COPY nginx.conf /etc/nginx/nginx.conf
|
|
@ -1,8 +1,5 @@
|
||||||
services:
|
services:
|
||||||
# Note: PostgreSQL is an external service. You can find more information about the configuration here:
|
|
||||||
# https://hub.docker.com/_/postgres
|
|
||||||
db:
|
db:
|
||||||
# Note: Check the recommend version here: https://docs.nextcloud.com/server/latest/admin_manual/installation/system_requirements.html#server
|
|
||||||
image: postgres:alpine
|
image: postgres:alpine
|
||||||
restart: always
|
restart: always
|
||||||
volumes:
|
volumes:
|
||||||
|
@ -10,8 +7,6 @@ services:
|
||||||
env_file:
|
env_file:
|
||||||
- db.env
|
- db.env
|
||||||
|
|
||||||
# Note: Redis is an external service. You can find more information about the configuration here:
|
|
||||||
# https://hub.docker.com/_/redis
|
|
||||||
redis:
|
redis:
|
||||||
image: redis:alpine
|
image: redis:alpine
|
||||||
restart: always
|
restart: always
|
||||||
|
|
|
@ -1,8 +1,5 @@
|
||||||
services:
|
services:
|
||||||
# Note: PostgreSQL is an external service. You can find more information about the configuration here:
|
|
||||||
# https://hub.docker.com/_/postgres
|
|
||||||
db:
|
db:
|
||||||
# Note: Check the recommend version here: https://docs.nextcloud.com/server/latest/admin_manual/installation/system_requirements.html#server
|
|
||||||
image: postgres:alpine
|
image: postgres:alpine
|
||||||
restart: always
|
restart: always
|
||||||
volumes:
|
volumes:
|
||||||
|
@ -10,8 +7,6 @@ services:
|
||||||
env_file:
|
env_file:
|
||||||
- db.env
|
- db.env
|
||||||
|
|
||||||
# Note: Redis is an external service. You can find more information about the configuration here:
|
|
||||||
# https://hub.docker.com/_/redis
|
|
||||||
redis:
|
redis:
|
||||||
image: redis:alpine
|
image: redis:alpine
|
||||||
restart: always
|
restart: always
|
||||||
|
@ -31,18 +26,14 @@ services:
|
||||||
- db
|
- db
|
||||||
- redis
|
- redis
|
||||||
|
|
||||||
# Note: Nginx is an external service. You can find more information about the configuration here:
|
|
||||||
# https://hub.docker.com/_/nginx/
|
|
||||||
web:
|
web:
|
||||||
image: nginx:alpine-slim
|
build: ./web
|
||||||
restart: always
|
restart: always
|
||||||
ports:
|
ports:
|
||||||
- 127.0.0.1:8080:80
|
- 127.0.0.1:8080:80
|
||||||
volumes:
|
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
|
- 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:
|
depends_on:
|
||||||
- app
|
- app
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
FROM nginx:alpine
|
||||||
|
|
||||||
|
COPY nginx.conf /etc/nginx/nginx.conf
|
|
@ -1,9 +1,6 @@
|
||||||
services:
|
services:
|
||||||
# Note: MariaDB is an external service. You can find more information about the configuration here:
|
|
||||||
# https://hub.docker.com/_/mariadb
|
|
||||||
db:
|
db:
|
||||||
# Note: Check the recommend version here: https://docs.nextcloud.com/server/latest/admin_manual/installation/system_requirements.html#server
|
image: mariadb:10.11
|
||||||
image: mariadb:lts
|
|
||||||
command: --transaction-isolation=READ-COMMITTED
|
command: --transaction-isolation=READ-COMMITTED
|
||||||
restart: always
|
restart: always
|
||||||
volumes:
|
volumes:
|
||||||
|
@ -15,8 +12,6 @@ services:
|
||||||
env_file:
|
env_file:
|
||||||
- db.env
|
- db.env
|
||||||
|
|
||||||
# Note: Redis is an external service. You can find more information about the configuration here:
|
|
||||||
# https://hub.docker.com/_/redis
|
|
||||||
redis:
|
redis:
|
||||||
image: redis:alpine
|
image: redis:alpine
|
||||||
restart: always
|
restart: always
|
||||||
|
@ -38,6 +33,9 @@ services:
|
||||||
depends_on:
|
depends_on:
|
||||||
- db
|
- db
|
||||||
- redis
|
- 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
|
- proxy
|
||||||
networks:
|
networks:
|
||||||
- proxy-tier
|
- proxy-tier
|
||||||
|
@ -54,9 +52,6 @@ services:
|
||||||
- db
|
- db
|
||||||
- redis
|
- 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:
|
proxy:
|
||||||
build: ./proxy
|
build: ./proxy
|
||||||
restart: always
|
restart: always
|
||||||
|
@ -74,8 +69,6 @@ services:
|
||||||
networks:
|
networks:
|
||||||
- proxy-tier
|
- 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:
|
letsencrypt-companion:
|
||||||
image: nginxproxy/acme-companion
|
image: nginxproxy/acme-companion
|
||||||
restart: always
|
restart: always
|
||||||
|
@ -92,7 +85,7 @@ services:
|
||||||
depends_on:
|
depends_on:
|
||||||
- proxy
|
- proxy
|
||||||
|
|
||||||
# self signed,outdated
|
# self signed
|
||||||
# omgwtfssl:
|
# omgwtfssl:
|
||||||
# image: paulczar/omgwtfssl
|
# image: paulczar/omgwtfssl
|
||||||
# restart: "no"
|
# restart: "no"
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
FROM nginxproxy/nginx-proxy:1.7-alpine
|
FROM nginxproxy/nginx-proxy:alpine
|
||||||
|
|
||||||
COPY uploadsize.conf /etc/nginx/conf.d/uploadsize.conf
|
COPY uploadsize.conf /etc/nginx/conf.d/uploadsize.conf
|
||||||
|
|
|
@ -1,9 +1,6 @@
|
||||||
services:
|
services:
|
||||||
# Note: MariaDB is an external service. You can find more information about the configuration here:
|
|
||||||
# https://hub.docker.com/_/mariadb
|
|
||||||
db:
|
db:
|
||||||
# Note: Check the recommend version here: https://docs.nextcloud.com/server/latest/admin_manual/installation/system_requirements.html#server
|
image: mariadb:10.11
|
||||||
image: mariadb:lts
|
|
||||||
command: --transaction-isolation=READ-COMMITTED
|
command: --transaction-isolation=READ-COMMITTED
|
||||||
restart: always
|
restart: always
|
||||||
volumes:
|
volumes:
|
||||||
|
@ -15,8 +12,6 @@ services:
|
||||||
env_file:
|
env_file:
|
||||||
- db.env
|
- db.env
|
||||||
|
|
||||||
# Note: Redis is an external service. You can find more information about the configuration here:
|
|
||||||
# https://hub.docker.com/_/redis
|
|
||||||
redis:
|
redis:
|
||||||
image: redis:alpine
|
image: redis:alpine
|
||||||
restart: always
|
restart: always
|
||||||
|
@ -37,16 +32,12 @@ services:
|
||||||
- redis
|
- redis
|
||||||
- proxy
|
- proxy
|
||||||
|
|
||||||
# Note: Nginx is an external service. You can find more information about the configuration here:
|
|
||||||
# https://hub.docker.com/_/nginx/
|
|
||||||
web:
|
web:
|
||||||
image: nginx:alpine-slim
|
build: ./web
|
||||||
restart: always
|
restart: always
|
||||||
volumes:
|
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
|
- 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:
|
environment:
|
||||||
- VIRTUAL_HOST=
|
- VIRTUAL_HOST=
|
||||||
- LETSENCRYPT_HOST=
|
- LETSENCRYPT_HOST=
|
||||||
|
@ -68,9 +59,6 @@ services:
|
||||||
- db
|
- db
|
||||||
- redis
|
- 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:
|
proxy:
|
||||||
build: ./proxy
|
build: ./proxy
|
||||||
restart: always
|
restart: always
|
||||||
|
@ -87,8 +75,6 @@ services:
|
||||||
networks:
|
networks:
|
||||||
- proxy-tier
|
- 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:
|
letsencrypt-companion:
|
||||||
image: nginxproxy/acme-companion
|
image: nginxproxy/acme-companion
|
||||||
restart: always
|
restart: always
|
||||||
|
@ -105,7 +91,7 @@ services:
|
||||||
depends_on:
|
depends_on:
|
||||||
- proxy
|
- proxy
|
||||||
|
|
||||||
# self signed, outdated.
|
# self signed
|
||||||
# omgwtfssl:
|
# omgwtfssl:
|
||||||
# image: paulczar/omgwtfssl
|
# image: paulczar/omgwtfssl
|
||||||
# restart: "no"
|
# restart: "no"
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
FROM nginxproxy/nginx-proxy:1.7-alpine
|
FROM nginxproxy/nginx-proxy:alpine
|
||||||
|
|
||||||
COPY uploadsize.conf /etc/nginx/conf.d/uploadsize.conf
|
COPY uploadsize.conf /etc/nginx/conf.d/uploadsize.conf
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
FROM nginx:alpine
|
||||||
|
|
||||||
|
COPY nginx.conf /etc/nginx/nginx.conf
|
|
@ -1,8 +1,5 @@
|
||||||
services:
|
services:
|
||||||
# Note: PostgreSQL is an external service. You can find more information about the configuration here:
|
|
||||||
# https://hub.docker.com/_/postgres
|
|
||||||
db:
|
db:
|
||||||
# Note: Check the recommend version here: https://docs.nextcloud.com/server/latest/admin_manual/installation/system_requirements.html#server
|
|
||||||
image: postgres:alpine
|
image: postgres:alpine
|
||||||
restart: always
|
restart: always
|
||||||
volumes:
|
volumes:
|
||||||
|
@ -10,8 +7,6 @@ services:
|
||||||
env_file:
|
env_file:
|
||||||
- db.env
|
- db.env
|
||||||
|
|
||||||
# Note: Redis is an external service. You can find more information about the configuration here:
|
|
||||||
# https://hub.docker.com/_/redis
|
|
||||||
redis:
|
redis:
|
||||||
image: redis:alpine
|
image: redis:alpine
|
||||||
restart: always
|
restart: always
|
||||||
|
@ -49,9 +44,6 @@ services:
|
||||||
- db
|
- db
|
||||||
- redis
|
- 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:
|
proxy:
|
||||||
build: ./proxy
|
build: ./proxy
|
||||||
restart: always
|
restart: always
|
||||||
|
@ -68,8 +60,6 @@ services:
|
||||||
networks:
|
networks:
|
||||||
- proxy-tier
|
- 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:
|
letsencrypt-companion:
|
||||||
image: nginxproxy/acme-companion
|
image: nginxproxy/acme-companion
|
||||||
restart: always
|
restart: always
|
||||||
|
@ -84,7 +74,7 @@ services:
|
||||||
depends_on:
|
depends_on:
|
||||||
- proxy
|
- proxy
|
||||||
|
|
||||||
# self signed, outdated
|
# self signed
|
||||||
# omgwtfssl:
|
# omgwtfssl:
|
||||||
# image: paulczar/omgwtfssl
|
# image: paulczar/omgwtfssl
|
||||||
# restart: "no"
|
# restart: "no"
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
FROM nginxproxy/nginx-proxy:1.7-alpine
|
FROM nginxproxy/nginx-proxy:alpine
|
||||||
|
|
||||||
COPY uploadsize.conf /etc/nginx/conf.d/uploadsize.conf
|
COPY uploadsize.conf /etc/nginx/conf.d/uploadsize.conf
|
||||||
|
|
|
@ -1,8 +1,7 @@
|
||||||
|
version: '3'
|
||||||
|
|
||||||
services:
|
services:
|
||||||
# Note: PostgreSQL is an external service. You can find more information about the configuration here:
|
|
||||||
# https://hub.docker.com/_/postgres
|
|
||||||
db:
|
db:
|
||||||
# Note: Check the recommend version here: https://docs.nextcloud.com/server/latest/admin_manual/installation/system_requirements.html#server
|
|
||||||
image: postgres:alpine
|
image: postgres:alpine
|
||||||
restart: always
|
restart: always
|
||||||
volumes:
|
volumes:
|
||||||
|
@ -10,8 +9,6 @@ services:
|
||||||
env_file:
|
env_file:
|
||||||
- db.env
|
- db.env
|
||||||
|
|
||||||
# Note: Redis is an external service. You can find more information about the configuration here:
|
|
||||||
# https://hub.docker.com/_/redis
|
|
||||||
redis:
|
redis:
|
||||||
image: redis:alpine
|
image: redis:alpine
|
||||||
restart: always
|
restart: always
|
||||||
|
@ -32,16 +29,12 @@ services:
|
||||||
- redis
|
- redis
|
||||||
- proxy
|
- proxy
|
||||||
|
|
||||||
# Note: Nginx is an external service. You can find more information about the configuration here:
|
|
||||||
# https://hub.docker.com/_/nginx/
|
|
||||||
web:
|
web:
|
||||||
image: nginx:alpine-slim
|
build: ./web
|
||||||
restart: always
|
restart: always
|
||||||
volumes:
|
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
|
- 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:
|
environment:
|
||||||
- VIRTUAL_HOST=
|
- VIRTUAL_HOST=
|
||||||
- LETSENCRYPT_HOST=
|
- LETSENCRYPT_HOST=
|
||||||
|
@ -63,9 +56,6 @@ services:
|
||||||
- db
|
- db
|
||||||
- redis
|
- 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:
|
proxy:
|
||||||
build: ./proxy
|
build: ./proxy
|
||||||
restart: always
|
restart: always
|
||||||
|
@ -82,8 +72,6 @@ services:
|
||||||
networks:
|
networks:
|
||||||
- proxy-tier
|
- 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:
|
letsencrypt-companion:
|
||||||
image: nginxproxy/acme-companion
|
image: nginxproxy/acme-companion
|
||||||
restart: always
|
restart: always
|
||||||
|
@ -100,7 +88,7 @@ services:
|
||||||
depends_on:
|
depends_on:
|
||||||
- proxy
|
- proxy
|
||||||
|
|
||||||
# self signed, outdated
|
# self signed
|
||||||
# omgwtfssl:
|
# omgwtfssl:
|
||||||
# image: paulczar/omgwtfssl
|
# image: paulczar/omgwtfssl
|
||||||
# restart: "no"
|
# restart: "no"
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
FROM nginxproxy/nginx-proxy:1.7-alpine
|
FROM nginxproxy/nginx-proxy:alpine
|
||||||
|
|
||||||
COPY uploadsize.conf /etc/nginx/conf.d/uploadsize.conf
|
COPY uploadsize.conf /etc/nginx/conf.d/uploadsize.conf
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
FROM nginx:alpine
|
||||||
|
|
||||||
|
COPY nginx.conf /etc/nginx/nginx.conf
|
15
.github/ISSUE_TEMPLATE/02-Image_enhancement
vendored
15
.github/ISSUE_TEMPLATE/02-Image_enhancement
vendored
|
@ -1,15 +0,0 @@
|
||||||
---
|
|
||||||
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,7 +1,6 @@
|
||||||
---
|
---
|
||||||
name: 🐛 Report a bug in the image
|
name: 🐛 Image issue
|
||||||
about: Create a report to help us improve the image
|
about: Issues related to the Nextcloud Docker image
|
||||||
labels: "bug, 0. Needs triage"
|
|
||||||
---
|
---
|
||||||
|
|
||||||
<!--
|
<!--
|
|
@ -1,6 +1,9 @@
|
||||||
# DO NOT EDIT: created by update.sh from Dockerfile-debian.template
|
# DO NOT EDIT: created by update.sh from Dockerfile-debian.template
|
||||||
FROM php:8.2-apache-bookworm
|
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
|
# entrypoint.sh and cron.sh dependencies
|
||||||
RUN set -ex; \
|
RUN set -ex; \
|
||||||
\
|
\
|
||||||
|
@ -65,10 +68,23 @@ RUN set -ex; \
|
||||||
zip \
|
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 will claim success even if one install fails, so we need to perform each install separately
|
||||||
pecl install APCu-5.1.24; \
|
pecl install APCu-5.1.24; \
|
||||||
pecl install igbinary-3.2.16; \
|
pecl install igbinary-3.2.16; \
|
||||||
pecl install imagick-3.8.0; \
|
|
||||||
pecl install memcached-3.3.0 \
|
pecl install memcached-3.3.0 \
|
||||||
--configureoptions 'enable-memcached-igbinary="yes"'; \
|
--configureoptions 'enable-memcached-igbinary="yes"'; \
|
||||||
pecl install redis-6.2.0 \
|
pecl install redis-6.2.0 \
|
||||||
|
@ -150,7 +166,7 @@ RUN { \
|
||||||
} > /etc/apache2/conf-available/apache-limits.conf; \
|
} > /etc/apache2/conf-available/apache-limits.conf; \
|
||||||
a2enconf apache-limits
|
a2enconf apache-limits
|
||||||
|
|
||||||
ENV NEXTCLOUD_VERSION 29.0.16
|
ENV NEXTCLOUD_VERSION 29.0.14
|
||||||
|
|
||||||
RUN set -ex; \
|
RUN set -ex; \
|
||||||
fetchDeps=" \
|
fetchDeps=" \
|
||||||
|
@ -160,8 +176,8 @@ RUN set -ex; \
|
||||||
apt-get update; \
|
apt-get update; \
|
||||||
apt-get install -y --no-install-recommends $fetchDeps; \
|
apt-get install -y --no-install-recommends $fetchDeps; \
|
||||||
\
|
\
|
||||||
curl -fsSL -o nextcloud.tar.bz2 "https://download.nextcloud.com/server/releases/nextcloud-29.0.16.tar.bz2"; \
|
curl -fsSL -o nextcloud.tar.bz2 "https://download.nextcloud.com/server/releases/nextcloud-29.0.14.tar.bz2"; \
|
||||||
curl -fsSL -o nextcloud.tar.bz2.asc "https://download.nextcloud.com/server/releases/nextcloud-29.0.16.tar.bz2.asc"; \
|
curl -fsSL -o nextcloud.tar.bz2.asc "https://download.nextcloud.com/server/releases/nextcloud-29.0.14.tar.bz2.asc"; \
|
||||||
export GNUPGHOME="$(mktemp -d)"; \
|
export GNUPGHOME="$(mktemp -d)"; \
|
||||||
# gpg key from https://nextcloud.com/nextcloud.asc
|
# gpg key from https://nextcloud.com/nextcloud.asc
|
||||||
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 28806A878AE423A28372792ED75899B9A724937A; \
|
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 28806A878AE423A28372792ED75899B9A724937A; \
|
||||||
|
|
|
@ -23,39 +23,32 @@ run_as() {
|
||||||
run_path() {
|
run_path() {
|
||||||
local hook_folder_path="/docker-entrypoint-hooks.d/$1"
|
local hook_folder_path="/docker-entrypoint-hooks.d/$1"
|
||||||
local return_code=0
|
local return_code=0
|
||||||
local found=0
|
|
||||||
|
|
||||||
echo "=> Searching for hook scripts (*.sh) to run, located in the folder \"${hook_folder_path}\""
|
if ! [ -d "${hook_folder_path}" ]; then
|
||||||
|
echo "=> Skipping the folder \"${hook_folder_path}\", because it doesn't exist"
|
||||||
if ! [ -d "${hook_folder_path}" ] || directory_empty "${hook_folder_path}"; then
|
|
||||||
echo "==> Skipped: the \"$1\" folder is empty (or does not exist)"
|
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
find "${hook_folder_path}" -maxdepth 1 -iname '*.sh' '(' -type f -o -type l ')' -print | sort | (
|
echo "=> Searching for scripts (*.sh) to run, located in the folder: ${hook_folder_path}"
|
||||||
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
|
if ! [ -x "${script_file_path}" ]; then
|
||||||
echo "==> The script \"${script_file_path}\" was skipped, because it lacks the executable flag"
|
echo "==> The script \"${script_file_path}\" was skipped, because it didn't have the executable flag"
|
||||||
found=$((found-1))
|
|
||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "==> Running the script (cwd: $(pwd)): \"${script_file_path}\""
|
echo "==> Running the script (cwd: $(pwd)): \"${script_file_path}\""
|
||||||
found=$((found+1))
|
|
||||||
run_as "${script_file_path}" || return_code="$?"
|
run_as "${script_file_path}" || return_code="$?"
|
||||||
|
|
||||||
if [ "${return_code}" -ne "0" ]; then
|
if [ "${return_code}" -ne "0" ]; then
|
||||||
echo "==> Failed at executing script \"${script_file_path}\". Exit code: ${return_code}"
|
echo "==> Failed at executing \"${script_file_path}\". Exit code: ${return_code}"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "==> Finished executing the script: \"${script_file_path}\""
|
echo "==> Finished the script: \"${script_file_path}\""
|
||||||
done
|
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
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -121,21 +114,13 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP
|
||||||
# check if redis host is an unix socket path
|
# check if redis host is an unix socket path
|
||||||
if [ "$(echo "$REDIS_HOST" | cut -c1-1)" = "/" ]; then
|
if [ "$(echo "$REDIS_HOST" | cut -c1-1)" = "/" ]; then
|
||||||
if [ -n "${REDIS_HOST_PASSWORD+x}" ]; then
|
if [ -n "${REDIS_HOST_PASSWORD+x}" ]; then
|
||||||
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}\""
|
echo "session.save_path = \"unix://${REDIS_HOST}?auth=${REDIS_HOST_PASSWORD}\""
|
||||||
fi
|
|
||||||
else
|
else
|
||||||
echo "session.save_path = \"unix://${REDIS_HOST}\""
|
echo "session.save_path = \"unix://${REDIS_HOST}\""
|
||||||
fi
|
fi
|
||||||
# check if redis password has been set
|
# check if redis password has been set
|
||||||
elif [ -n "${REDIS_HOST_PASSWORD+x}" ]; then
|
elif [ -n "${REDIS_HOST_PASSWORD+x}" ]; then
|
||||||
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}\""
|
echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth=${REDIS_HOST_PASSWORD}\""
|
||||||
fi
|
|
||||||
else
|
else
|
||||||
echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}\""
|
echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}\""
|
||||||
fi
|
fi
|
||||||
|
@ -252,14 +237,12 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP
|
||||||
fi
|
fi
|
||||||
if [ -n "${NEXTCLOUD_TRUSTED_DOMAINS+x}" ]; then
|
if [ -n "${NEXTCLOUD_TRUSTED_DOMAINS+x}" ]; then
|
||||||
echo "Setting trusted domains…"
|
echo "Setting trusted domains…"
|
||||||
set -f # turn off glob
|
|
||||||
NC_TRUSTED_DOMAIN_IDX=1
|
NC_TRUSTED_DOMAIN_IDX=1
|
||||||
for DOMAIN in ${NEXTCLOUD_TRUSTED_DOMAINS}; do
|
for DOMAIN in $NEXTCLOUD_TRUSTED_DOMAINS ; do
|
||||||
DOMAIN=$(echo "${DOMAIN}" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')
|
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}\""
|
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))
|
NC_TRUSTED_DOMAIN_IDX=$((NC_TRUSTED_DOMAIN_IDX+1))
|
||||||
done
|
done
|
||||||
set +f # turn glob back on
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
run_path post-installation
|
run_path post-installation
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
# DO NOT EDIT: created by update.sh from Dockerfile-alpine.template
|
# DO NOT EDIT: created by update.sh from Dockerfile-alpine.template
|
||||||
FROM php:8.2-fpm-alpine3.21
|
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
|
# entrypoint.sh and cron.sh dependencies
|
||||||
RUN set -ex; \
|
RUN set -ex; \
|
||||||
\
|
\
|
||||||
|
@ -62,10 +65,23 @@ RUN set -ex; \
|
||||||
zip \
|
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 will claim success even if one install fails, so we need to perform each install separately
|
||||||
pecl install APCu-5.1.24; \
|
pecl install APCu-5.1.24; \
|
||||||
pecl install igbinary-3.2.16; \
|
pecl install igbinary-3.2.16; \
|
||||||
pecl install imagick-3.8.0; \
|
|
||||||
pecl install memcached-3.3.0 \
|
pecl install memcached-3.3.0 \
|
||||||
--configureoptions 'enable-memcached-igbinary="yes"'; \
|
--configureoptions 'enable-memcached-igbinary="yes"'; \
|
||||||
pecl install redis-6.2.0 \
|
pecl install redis-6.2.0 \
|
||||||
|
@ -130,7 +146,7 @@ RUN { \
|
||||||
VOLUME /var/www/html
|
VOLUME /var/www/html
|
||||||
|
|
||||||
|
|
||||||
ENV NEXTCLOUD_VERSION 29.0.16
|
ENV NEXTCLOUD_VERSION 29.0.14
|
||||||
|
|
||||||
RUN set -ex; \
|
RUN set -ex; \
|
||||||
apk add --no-cache --virtual .fetch-deps \
|
apk add --no-cache --virtual .fetch-deps \
|
||||||
|
@ -138,8 +154,8 @@ RUN set -ex; \
|
||||||
gnupg \
|
gnupg \
|
||||||
; \
|
; \
|
||||||
\
|
\
|
||||||
curl -fsSL -o nextcloud.tar.bz2 "https://download.nextcloud.com/server/releases/nextcloud-29.0.16.tar.bz2"; \
|
curl -fsSL -o nextcloud.tar.bz2 "https://download.nextcloud.com/server/releases/nextcloud-29.0.14.tar.bz2"; \
|
||||||
curl -fsSL -o nextcloud.tar.bz2.asc "https://download.nextcloud.com/server/releases/nextcloud-29.0.16.tar.bz2.asc"; \
|
curl -fsSL -o nextcloud.tar.bz2.asc "https://download.nextcloud.com/server/releases/nextcloud-29.0.14.tar.bz2.asc"; \
|
||||||
export GNUPGHOME="$(mktemp -d)"; \
|
export GNUPGHOME="$(mktemp -d)"; \
|
||||||
# gpg key from https://nextcloud.com/nextcloud.asc
|
# gpg key from https://nextcloud.com/nextcloud.asc
|
||||||
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 28806A878AE423A28372792ED75899B9A724937A; \
|
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 28806A878AE423A28372792ED75899B9A724937A; \
|
||||||
|
|
|
@ -23,39 +23,32 @@ run_as() {
|
||||||
run_path() {
|
run_path() {
|
||||||
local hook_folder_path="/docker-entrypoint-hooks.d/$1"
|
local hook_folder_path="/docker-entrypoint-hooks.d/$1"
|
||||||
local return_code=0
|
local return_code=0
|
||||||
local found=0
|
|
||||||
|
|
||||||
echo "=> Searching for hook scripts (*.sh) to run, located in the folder \"${hook_folder_path}\""
|
if ! [ -d "${hook_folder_path}" ]; then
|
||||||
|
echo "=> Skipping the folder \"${hook_folder_path}\", because it doesn't exist"
|
||||||
if ! [ -d "${hook_folder_path}" ] || directory_empty "${hook_folder_path}"; then
|
|
||||||
echo "==> Skipped: the \"$1\" folder is empty (or does not exist)"
|
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
find "${hook_folder_path}" -maxdepth 1 -iname '*.sh' '(' -type f -o -type l ')' -print | sort | (
|
echo "=> Searching for scripts (*.sh) to run, located in the folder: ${hook_folder_path}"
|
||||||
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
|
if ! [ -x "${script_file_path}" ]; then
|
||||||
echo "==> The script \"${script_file_path}\" was skipped, because it lacks the executable flag"
|
echo "==> The script \"${script_file_path}\" was skipped, because it didn't have the executable flag"
|
||||||
found=$((found-1))
|
|
||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "==> Running the script (cwd: $(pwd)): \"${script_file_path}\""
|
echo "==> Running the script (cwd: $(pwd)): \"${script_file_path}\""
|
||||||
found=$((found+1))
|
|
||||||
run_as "${script_file_path}" || return_code="$?"
|
run_as "${script_file_path}" || return_code="$?"
|
||||||
|
|
||||||
if [ "${return_code}" -ne "0" ]; then
|
if [ "${return_code}" -ne "0" ]; then
|
||||||
echo "==> Failed at executing script \"${script_file_path}\". Exit code: ${return_code}"
|
echo "==> Failed at executing \"${script_file_path}\". Exit code: ${return_code}"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "==> Finished executing the script: \"${script_file_path}\""
|
echo "==> Finished the script: \"${script_file_path}\""
|
||||||
done
|
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
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -121,21 +114,13 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP
|
||||||
# check if redis host is an unix socket path
|
# check if redis host is an unix socket path
|
||||||
if [ "$(echo "$REDIS_HOST" | cut -c1-1)" = "/" ]; then
|
if [ "$(echo "$REDIS_HOST" | cut -c1-1)" = "/" ]; then
|
||||||
if [ -n "${REDIS_HOST_PASSWORD+x}" ]; then
|
if [ -n "${REDIS_HOST_PASSWORD+x}" ]; then
|
||||||
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}\""
|
echo "session.save_path = \"unix://${REDIS_HOST}?auth=${REDIS_HOST_PASSWORD}\""
|
||||||
fi
|
|
||||||
else
|
else
|
||||||
echo "session.save_path = \"unix://${REDIS_HOST}\""
|
echo "session.save_path = \"unix://${REDIS_HOST}\""
|
||||||
fi
|
fi
|
||||||
# check if redis password has been set
|
# check if redis password has been set
|
||||||
elif [ -n "${REDIS_HOST_PASSWORD+x}" ]; then
|
elif [ -n "${REDIS_HOST_PASSWORD+x}" ]; then
|
||||||
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}\""
|
echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth=${REDIS_HOST_PASSWORD}\""
|
||||||
fi
|
|
||||||
else
|
else
|
||||||
echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}\""
|
echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}\""
|
||||||
fi
|
fi
|
||||||
|
@ -252,14 +237,12 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP
|
||||||
fi
|
fi
|
||||||
if [ -n "${NEXTCLOUD_TRUSTED_DOMAINS+x}" ]; then
|
if [ -n "${NEXTCLOUD_TRUSTED_DOMAINS+x}" ]; then
|
||||||
echo "Setting trusted domains…"
|
echo "Setting trusted domains…"
|
||||||
set -f # turn off glob
|
|
||||||
NC_TRUSTED_DOMAIN_IDX=1
|
NC_TRUSTED_DOMAIN_IDX=1
|
||||||
for DOMAIN in ${NEXTCLOUD_TRUSTED_DOMAINS}; do
|
for DOMAIN in $NEXTCLOUD_TRUSTED_DOMAINS ; do
|
||||||
DOMAIN=$(echo "${DOMAIN}" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')
|
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}\""
|
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))
|
NC_TRUSTED_DOMAIN_IDX=$((NC_TRUSTED_DOMAIN_IDX+1))
|
||||||
done
|
done
|
||||||
set +f # turn glob back on
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
run_path post-installation
|
run_path post-installation
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
# DO NOT EDIT: created by update.sh from Dockerfile-debian.template
|
# DO NOT EDIT: created by update.sh from Dockerfile-debian.template
|
||||||
FROM php:8.2-fpm-bookworm
|
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
|
# entrypoint.sh and cron.sh dependencies
|
||||||
RUN set -ex; \
|
RUN set -ex; \
|
||||||
\
|
\
|
||||||
|
@ -65,10 +68,23 @@ RUN set -ex; \
|
||||||
zip \
|
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 will claim success even if one install fails, so we need to perform each install separately
|
||||||
pecl install APCu-5.1.24; \
|
pecl install APCu-5.1.24; \
|
||||||
pecl install igbinary-3.2.16; \
|
pecl install igbinary-3.2.16; \
|
||||||
pecl install imagick-3.8.0; \
|
|
||||||
pecl install memcached-3.3.0 \
|
pecl install memcached-3.3.0 \
|
||||||
--configureoptions 'enable-memcached-igbinary="yes"'; \
|
--configureoptions 'enable-memcached-igbinary="yes"'; \
|
||||||
pecl install redis-6.2.0 \
|
pecl install redis-6.2.0 \
|
||||||
|
@ -135,7 +151,7 @@ RUN { \
|
||||||
VOLUME /var/www/html
|
VOLUME /var/www/html
|
||||||
|
|
||||||
|
|
||||||
ENV NEXTCLOUD_VERSION 29.0.16
|
ENV NEXTCLOUD_VERSION 29.0.14
|
||||||
|
|
||||||
RUN set -ex; \
|
RUN set -ex; \
|
||||||
fetchDeps=" \
|
fetchDeps=" \
|
||||||
|
@ -145,8 +161,8 @@ RUN set -ex; \
|
||||||
apt-get update; \
|
apt-get update; \
|
||||||
apt-get install -y --no-install-recommends $fetchDeps; \
|
apt-get install -y --no-install-recommends $fetchDeps; \
|
||||||
\
|
\
|
||||||
curl -fsSL -o nextcloud.tar.bz2 "https://download.nextcloud.com/server/releases/nextcloud-29.0.16.tar.bz2"; \
|
curl -fsSL -o nextcloud.tar.bz2 "https://download.nextcloud.com/server/releases/nextcloud-29.0.14.tar.bz2"; \
|
||||||
curl -fsSL -o nextcloud.tar.bz2.asc "https://download.nextcloud.com/server/releases/nextcloud-29.0.16.tar.bz2.asc"; \
|
curl -fsSL -o nextcloud.tar.bz2.asc "https://download.nextcloud.com/server/releases/nextcloud-29.0.14.tar.bz2.asc"; \
|
||||||
export GNUPGHOME="$(mktemp -d)"; \
|
export GNUPGHOME="$(mktemp -d)"; \
|
||||||
# gpg key from https://nextcloud.com/nextcloud.asc
|
# gpg key from https://nextcloud.com/nextcloud.asc
|
||||||
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 28806A878AE423A28372792ED75899B9A724937A; \
|
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 28806A878AE423A28372792ED75899B9A724937A; \
|
||||||
|
|
|
@ -23,39 +23,32 @@ run_as() {
|
||||||
run_path() {
|
run_path() {
|
||||||
local hook_folder_path="/docker-entrypoint-hooks.d/$1"
|
local hook_folder_path="/docker-entrypoint-hooks.d/$1"
|
||||||
local return_code=0
|
local return_code=0
|
||||||
local found=0
|
|
||||||
|
|
||||||
echo "=> Searching for hook scripts (*.sh) to run, located in the folder \"${hook_folder_path}\""
|
if ! [ -d "${hook_folder_path}" ]; then
|
||||||
|
echo "=> Skipping the folder \"${hook_folder_path}\", because it doesn't exist"
|
||||||
if ! [ -d "${hook_folder_path}" ] || directory_empty "${hook_folder_path}"; then
|
|
||||||
echo "==> Skipped: the \"$1\" folder is empty (or does not exist)"
|
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
find "${hook_folder_path}" -maxdepth 1 -iname '*.sh' '(' -type f -o -type l ')' -print | sort | (
|
echo "=> Searching for scripts (*.sh) to run, located in the folder: ${hook_folder_path}"
|
||||||
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
|
if ! [ -x "${script_file_path}" ]; then
|
||||||
echo "==> The script \"${script_file_path}\" was skipped, because it lacks the executable flag"
|
echo "==> The script \"${script_file_path}\" was skipped, because it didn't have the executable flag"
|
||||||
found=$((found-1))
|
|
||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "==> Running the script (cwd: $(pwd)): \"${script_file_path}\""
|
echo "==> Running the script (cwd: $(pwd)): \"${script_file_path}\""
|
||||||
found=$((found+1))
|
|
||||||
run_as "${script_file_path}" || return_code="$?"
|
run_as "${script_file_path}" || return_code="$?"
|
||||||
|
|
||||||
if [ "${return_code}" -ne "0" ]; then
|
if [ "${return_code}" -ne "0" ]; then
|
||||||
echo "==> Failed at executing script \"${script_file_path}\". Exit code: ${return_code}"
|
echo "==> Failed at executing \"${script_file_path}\". Exit code: ${return_code}"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "==> Finished executing the script: \"${script_file_path}\""
|
echo "==> Finished the script: \"${script_file_path}\""
|
||||||
done
|
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
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -121,21 +114,13 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP
|
||||||
# check if redis host is an unix socket path
|
# check if redis host is an unix socket path
|
||||||
if [ "$(echo "$REDIS_HOST" | cut -c1-1)" = "/" ]; then
|
if [ "$(echo "$REDIS_HOST" | cut -c1-1)" = "/" ]; then
|
||||||
if [ -n "${REDIS_HOST_PASSWORD+x}" ]; then
|
if [ -n "${REDIS_HOST_PASSWORD+x}" ]; then
|
||||||
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}\""
|
echo "session.save_path = \"unix://${REDIS_HOST}?auth=${REDIS_HOST_PASSWORD}\""
|
||||||
fi
|
|
||||||
else
|
else
|
||||||
echo "session.save_path = \"unix://${REDIS_HOST}\""
|
echo "session.save_path = \"unix://${REDIS_HOST}\""
|
||||||
fi
|
fi
|
||||||
# check if redis password has been set
|
# check if redis password has been set
|
||||||
elif [ -n "${REDIS_HOST_PASSWORD+x}" ]; then
|
elif [ -n "${REDIS_HOST_PASSWORD+x}" ]; then
|
||||||
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}\""
|
echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth=${REDIS_HOST_PASSWORD}\""
|
||||||
fi
|
|
||||||
else
|
else
|
||||||
echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}\""
|
echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}\""
|
||||||
fi
|
fi
|
||||||
|
@ -252,14 +237,12 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP
|
||||||
fi
|
fi
|
||||||
if [ -n "${NEXTCLOUD_TRUSTED_DOMAINS+x}" ]; then
|
if [ -n "${NEXTCLOUD_TRUSTED_DOMAINS+x}" ]; then
|
||||||
echo "Setting trusted domains…"
|
echo "Setting trusted domains…"
|
||||||
set -f # turn off glob
|
|
||||||
NC_TRUSTED_DOMAIN_IDX=1
|
NC_TRUSTED_DOMAIN_IDX=1
|
||||||
for DOMAIN in ${NEXTCLOUD_TRUSTED_DOMAINS}; do
|
for DOMAIN in $NEXTCLOUD_TRUSTED_DOMAINS ; do
|
||||||
DOMAIN=$(echo "${DOMAIN}" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')
|
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}\""
|
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))
|
NC_TRUSTED_DOMAIN_IDX=$((NC_TRUSTED_DOMAIN_IDX+1))
|
||||||
done
|
done
|
||||||
set +f # turn glob back on
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
run_path post-installation
|
run_path post-installation
|
||||||
|
|
|
@ -1,5 +1,8 @@
|
||||||
# DO NOT EDIT: created by update.sh from Dockerfile-debian.template
|
# DO NOT EDIT: created by update.sh from Dockerfile-debian.template
|
||||||
FROM php:8.3-apache-bookworm
|
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
|
# entrypoint.sh and cron.sh dependencies
|
||||||
RUN set -ex; \
|
RUN set -ex; \
|
||||||
|
@ -65,10 +68,23 @@ RUN set -ex; \
|
||||||
zip \
|
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 will claim success even if one install fails, so we need to perform each install separately
|
||||||
pecl install APCu-5.1.24; \
|
pecl install APCu-5.1.24; \
|
||||||
pecl install igbinary-3.2.16; \
|
pecl install igbinary-3.2.16; \
|
||||||
pecl install imagick-3.8.0; \
|
|
||||||
pecl install memcached-3.3.0 \
|
pecl install memcached-3.3.0 \
|
||||||
--configureoptions 'enable-memcached-igbinary="yes"'; \
|
--configureoptions 'enable-memcached-igbinary="yes"'; \
|
||||||
pecl install redis-6.2.0 \
|
pecl install redis-6.2.0 \
|
||||||
|
@ -150,7 +166,7 @@ RUN { \
|
||||||
} > /etc/apache2/conf-available/apache-limits.conf; \
|
} > /etc/apache2/conf-available/apache-limits.conf; \
|
||||||
a2enconf apache-limits
|
a2enconf apache-limits
|
||||||
|
|
||||||
ENV NEXTCLOUD_VERSION 30.0.10
|
ENV NEXTCLOUD_VERSION 30.0.8
|
||||||
|
|
||||||
RUN set -ex; \
|
RUN set -ex; \
|
||||||
fetchDeps=" \
|
fetchDeps=" \
|
||||||
|
@ -160,8 +176,8 @@ RUN set -ex; \
|
||||||
apt-get update; \
|
apt-get update; \
|
||||||
apt-get install -y --no-install-recommends $fetchDeps; \
|
apt-get install -y --no-install-recommends $fetchDeps; \
|
||||||
\
|
\
|
||||||
curl -fsSL -o nextcloud.tar.bz2 "https://download.nextcloud.com/server/releases/nextcloud-30.0.10.tar.bz2"; \
|
curl -fsSL -o nextcloud.tar.bz2 "https://download.nextcloud.com/server/releases/nextcloud-30.0.8.tar.bz2"; \
|
||||||
curl -fsSL -o nextcloud.tar.bz2.asc "https://download.nextcloud.com/server/releases/nextcloud-30.0.10.tar.bz2.asc"; \
|
curl -fsSL -o nextcloud.tar.bz2.asc "https://download.nextcloud.com/server/releases/nextcloud-30.0.8.tar.bz2.asc"; \
|
||||||
export GNUPGHOME="$(mktemp -d)"; \
|
export GNUPGHOME="$(mktemp -d)"; \
|
||||||
# gpg key from https://nextcloud.com/nextcloud.asc
|
# gpg key from https://nextcloud.com/nextcloud.asc
|
||||||
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 28806A878AE423A28372792ED75899B9A724937A; \
|
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 28806A878AE423A28372792ED75899B9A724937A; \
|
||||||
|
|
|
@ -23,39 +23,32 @@ run_as() {
|
||||||
run_path() {
|
run_path() {
|
||||||
local hook_folder_path="/docker-entrypoint-hooks.d/$1"
|
local hook_folder_path="/docker-entrypoint-hooks.d/$1"
|
||||||
local return_code=0
|
local return_code=0
|
||||||
local found=0
|
|
||||||
|
|
||||||
echo "=> Searching for hook scripts (*.sh) to run, located in the folder \"${hook_folder_path}\""
|
if ! [ -d "${hook_folder_path}" ]; then
|
||||||
|
echo "=> Skipping the folder \"${hook_folder_path}\", because it doesn't exist"
|
||||||
if ! [ -d "${hook_folder_path}" ] || directory_empty "${hook_folder_path}"; then
|
|
||||||
echo "==> Skipped: the \"$1\" folder is empty (or does not exist)"
|
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
find "${hook_folder_path}" -maxdepth 1 -iname '*.sh' '(' -type f -o -type l ')' -print | sort | (
|
echo "=> Searching for scripts (*.sh) to run, located in the folder: ${hook_folder_path}"
|
||||||
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
|
if ! [ -x "${script_file_path}" ]; then
|
||||||
echo "==> The script \"${script_file_path}\" was skipped, because it lacks the executable flag"
|
echo "==> The script \"${script_file_path}\" was skipped, because it didn't have the executable flag"
|
||||||
found=$((found-1))
|
|
||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "==> Running the script (cwd: $(pwd)): \"${script_file_path}\""
|
echo "==> Running the script (cwd: $(pwd)): \"${script_file_path}\""
|
||||||
found=$((found+1))
|
|
||||||
run_as "${script_file_path}" || return_code="$?"
|
run_as "${script_file_path}" || return_code="$?"
|
||||||
|
|
||||||
if [ "${return_code}" -ne "0" ]; then
|
if [ "${return_code}" -ne "0" ]; then
|
||||||
echo "==> Failed at executing script \"${script_file_path}\". Exit code: ${return_code}"
|
echo "==> Failed at executing \"${script_file_path}\". Exit code: ${return_code}"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "==> Finished executing the script: \"${script_file_path}\""
|
echo "==> Finished the script: \"${script_file_path}\""
|
||||||
done
|
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
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -121,21 +114,13 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP
|
||||||
# check if redis host is an unix socket path
|
# check if redis host is an unix socket path
|
||||||
if [ "$(echo "$REDIS_HOST" | cut -c1-1)" = "/" ]; then
|
if [ "$(echo "$REDIS_HOST" | cut -c1-1)" = "/" ]; then
|
||||||
if [ -n "${REDIS_HOST_PASSWORD+x}" ]; then
|
if [ -n "${REDIS_HOST_PASSWORD+x}" ]; then
|
||||||
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}\""
|
echo "session.save_path = \"unix://${REDIS_HOST}?auth=${REDIS_HOST_PASSWORD}\""
|
||||||
fi
|
|
||||||
else
|
else
|
||||||
echo "session.save_path = \"unix://${REDIS_HOST}\""
|
echo "session.save_path = \"unix://${REDIS_HOST}\""
|
||||||
fi
|
fi
|
||||||
# check if redis password has been set
|
# check if redis password has been set
|
||||||
elif [ -n "${REDIS_HOST_PASSWORD+x}" ]; then
|
elif [ -n "${REDIS_HOST_PASSWORD+x}" ]; then
|
||||||
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}\""
|
echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth=${REDIS_HOST_PASSWORD}\""
|
||||||
fi
|
|
||||||
else
|
else
|
||||||
echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}\""
|
echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}\""
|
||||||
fi
|
fi
|
||||||
|
@ -252,14 +237,12 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP
|
||||||
fi
|
fi
|
||||||
if [ -n "${NEXTCLOUD_TRUSTED_DOMAINS+x}" ]; then
|
if [ -n "${NEXTCLOUD_TRUSTED_DOMAINS+x}" ]; then
|
||||||
echo "Setting trusted domains…"
|
echo "Setting trusted domains…"
|
||||||
set -f # turn off glob
|
|
||||||
NC_TRUSTED_DOMAIN_IDX=1
|
NC_TRUSTED_DOMAIN_IDX=1
|
||||||
for DOMAIN in ${NEXTCLOUD_TRUSTED_DOMAINS}; do
|
for DOMAIN in $NEXTCLOUD_TRUSTED_DOMAINS ; do
|
||||||
DOMAIN=$(echo "${DOMAIN}" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')
|
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}\""
|
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))
|
NC_TRUSTED_DOMAIN_IDX=$((NC_TRUSTED_DOMAIN_IDX+1))
|
||||||
done
|
done
|
||||||
set +f # turn glob back on
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
run_path post-installation
|
run_path post-installation
|
||||||
|
|
|
@ -1,5 +1,8 @@
|
||||||
# DO NOT EDIT: created by update.sh from Dockerfile-alpine.template
|
# DO NOT EDIT: created by update.sh from Dockerfile-alpine.template
|
||||||
FROM php:8.3-fpm-alpine3.21
|
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
|
# entrypoint.sh and cron.sh dependencies
|
||||||
RUN set -ex; \
|
RUN set -ex; \
|
||||||
|
@ -62,10 +65,23 @@ RUN set -ex; \
|
||||||
zip \
|
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 will claim success even if one install fails, so we need to perform each install separately
|
||||||
pecl install APCu-5.1.24; \
|
pecl install APCu-5.1.24; \
|
||||||
pecl install igbinary-3.2.16; \
|
pecl install igbinary-3.2.16; \
|
||||||
pecl install imagick-3.8.0; \
|
|
||||||
pecl install memcached-3.3.0 \
|
pecl install memcached-3.3.0 \
|
||||||
--configureoptions 'enable-memcached-igbinary="yes"'; \
|
--configureoptions 'enable-memcached-igbinary="yes"'; \
|
||||||
pecl install redis-6.2.0 \
|
pecl install redis-6.2.0 \
|
||||||
|
@ -130,7 +146,7 @@ RUN { \
|
||||||
VOLUME /var/www/html
|
VOLUME /var/www/html
|
||||||
|
|
||||||
|
|
||||||
ENV NEXTCLOUD_VERSION 30.0.10
|
ENV NEXTCLOUD_VERSION 30.0.8
|
||||||
|
|
||||||
RUN set -ex; \
|
RUN set -ex; \
|
||||||
apk add --no-cache --virtual .fetch-deps \
|
apk add --no-cache --virtual .fetch-deps \
|
||||||
|
@ -138,8 +154,8 @@ RUN set -ex; \
|
||||||
gnupg \
|
gnupg \
|
||||||
; \
|
; \
|
||||||
\
|
\
|
||||||
curl -fsSL -o nextcloud.tar.bz2 "https://download.nextcloud.com/server/releases/nextcloud-30.0.10.tar.bz2"; \
|
curl -fsSL -o nextcloud.tar.bz2 "https://download.nextcloud.com/server/releases/nextcloud-30.0.8.tar.bz2"; \
|
||||||
curl -fsSL -o nextcloud.tar.bz2.asc "https://download.nextcloud.com/server/releases/nextcloud-30.0.10.tar.bz2.asc"; \
|
curl -fsSL -o nextcloud.tar.bz2.asc "https://download.nextcloud.com/server/releases/nextcloud-30.0.8.tar.bz2.asc"; \
|
||||||
export GNUPGHOME="$(mktemp -d)"; \
|
export GNUPGHOME="$(mktemp -d)"; \
|
||||||
# gpg key from https://nextcloud.com/nextcloud.asc
|
# gpg key from https://nextcloud.com/nextcloud.asc
|
||||||
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 28806A878AE423A28372792ED75899B9A724937A; \
|
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 28806A878AE423A28372792ED75899B9A724937A; \
|
||||||
|
|
|
@ -23,39 +23,32 @@ run_as() {
|
||||||
run_path() {
|
run_path() {
|
||||||
local hook_folder_path="/docker-entrypoint-hooks.d/$1"
|
local hook_folder_path="/docker-entrypoint-hooks.d/$1"
|
||||||
local return_code=0
|
local return_code=0
|
||||||
local found=0
|
|
||||||
|
|
||||||
echo "=> Searching for hook scripts (*.sh) to run, located in the folder \"${hook_folder_path}\""
|
if ! [ -d "${hook_folder_path}" ]; then
|
||||||
|
echo "=> Skipping the folder \"${hook_folder_path}\", because it doesn't exist"
|
||||||
if ! [ -d "${hook_folder_path}" ] || directory_empty "${hook_folder_path}"; then
|
|
||||||
echo "==> Skipped: the \"$1\" folder is empty (or does not exist)"
|
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
find "${hook_folder_path}" -maxdepth 1 -iname '*.sh' '(' -type f -o -type l ')' -print | sort | (
|
echo "=> Searching for scripts (*.sh) to run, located in the folder: ${hook_folder_path}"
|
||||||
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
|
if ! [ -x "${script_file_path}" ]; then
|
||||||
echo "==> The script \"${script_file_path}\" was skipped, because it lacks the executable flag"
|
echo "==> The script \"${script_file_path}\" was skipped, because it didn't have the executable flag"
|
||||||
found=$((found-1))
|
|
||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "==> Running the script (cwd: $(pwd)): \"${script_file_path}\""
|
echo "==> Running the script (cwd: $(pwd)): \"${script_file_path}\""
|
||||||
found=$((found+1))
|
|
||||||
run_as "${script_file_path}" || return_code="$?"
|
run_as "${script_file_path}" || return_code="$?"
|
||||||
|
|
||||||
if [ "${return_code}" -ne "0" ]; then
|
if [ "${return_code}" -ne "0" ]; then
|
||||||
echo "==> Failed at executing script \"${script_file_path}\". Exit code: ${return_code}"
|
echo "==> Failed at executing \"${script_file_path}\". Exit code: ${return_code}"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "==> Finished executing the script: \"${script_file_path}\""
|
echo "==> Finished the script: \"${script_file_path}\""
|
||||||
done
|
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
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -121,21 +114,13 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP
|
||||||
# check if redis host is an unix socket path
|
# check if redis host is an unix socket path
|
||||||
if [ "$(echo "$REDIS_HOST" | cut -c1-1)" = "/" ]; then
|
if [ "$(echo "$REDIS_HOST" | cut -c1-1)" = "/" ]; then
|
||||||
if [ -n "${REDIS_HOST_PASSWORD+x}" ]; then
|
if [ -n "${REDIS_HOST_PASSWORD+x}" ]; then
|
||||||
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}\""
|
echo "session.save_path = \"unix://${REDIS_HOST}?auth=${REDIS_HOST_PASSWORD}\""
|
||||||
fi
|
|
||||||
else
|
else
|
||||||
echo "session.save_path = \"unix://${REDIS_HOST}\""
|
echo "session.save_path = \"unix://${REDIS_HOST}\""
|
||||||
fi
|
fi
|
||||||
# check if redis password has been set
|
# check if redis password has been set
|
||||||
elif [ -n "${REDIS_HOST_PASSWORD+x}" ]; then
|
elif [ -n "${REDIS_HOST_PASSWORD+x}" ]; then
|
||||||
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}\""
|
echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth=${REDIS_HOST_PASSWORD}\""
|
||||||
fi
|
|
||||||
else
|
else
|
||||||
echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}\""
|
echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}\""
|
||||||
fi
|
fi
|
||||||
|
@ -252,14 +237,12 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP
|
||||||
fi
|
fi
|
||||||
if [ -n "${NEXTCLOUD_TRUSTED_DOMAINS+x}" ]; then
|
if [ -n "${NEXTCLOUD_TRUSTED_DOMAINS+x}" ]; then
|
||||||
echo "Setting trusted domains…"
|
echo "Setting trusted domains…"
|
||||||
set -f # turn off glob
|
|
||||||
NC_TRUSTED_DOMAIN_IDX=1
|
NC_TRUSTED_DOMAIN_IDX=1
|
||||||
for DOMAIN in ${NEXTCLOUD_TRUSTED_DOMAINS}; do
|
for DOMAIN in $NEXTCLOUD_TRUSTED_DOMAINS ; do
|
||||||
DOMAIN=$(echo "${DOMAIN}" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')
|
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}\""
|
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))
|
NC_TRUSTED_DOMAIN_IDX=$((NC_TRUSTED_DOMAIN_IDX+1))
|
||||||
done
|
done
|
||||||
set +f # turn glob back on
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
run_path post-installation
|
run_path post-installation
|
||||||
|
|
|
@ -1,5 +1,8 @@
|
||||||
# DO NOT EDIT: created by update.sh from Dockerfile-debian.template
|
# DO NOT EDIT: created by update.sh from Dockerfile-debian.template
|
||||||
FROM php:8.3-fpm-bookworm
|
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
|
# entrypoint.sh and cron.sh dependencies
|
||||||
RUN set -ex; \
|
RUN set -ex; \
|
||||||
|
@ -65,10 +68,23 @@ RUN set -ex; \
|
||||||
zip \
|
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 will claim success even if one install fails, so we need to perform each install separately
|
||||||
pecl install APCu-5.1.24; \
|
pecl install APCu-5.1.24; \
|
||||||
pecl install igbinary-3.2.16; \
|
pecl install igbinary-3.2.16; \
|
||||||
pecl install imagick-3.8.0; \
|
|
||||||
pecl install memcached-3.3.0 \
|
pecl install memcached-3.3.0 \
|
||||||
--configureoptions 'enable-memcached-igbinary="yes"'; \
|
--configureoptions 'enable-memcached-igbinary="yes"'; \
|
||||||
pecl install redis-6.2.0 \
|
pecl install redis-6.2.0 \
|
||||||
|
@ -135,7 +151,7 @@ RUN { \
|
||||||
VOLUME /var/www/html
|
VOLUME /var/www/html
|
||||||
|
|
||||||
|
|
||||||
ENV NEXTCLOUD_VERSION 30.0.10
|
ENV NEXTCLOUD_VERSION 30.0.8
|
||||||
|
|
||||||
RUN set -ex; \
|
RUN set -ex; \
|
||||||
fetchDeps=" \
|
fetchDeps=" \
|
||||||
|
@ -145,8 +161,8 @@ RUN set -ex; \
|
||||||
apt-get update; \
|
apt-get update; \
|
||||||
apt-get install -y --no-install-recommends $fetchDeps; \
|
apt-get install -y --no-install-recommends $fetchDeps; \
|
||||||
\
|
\
|
||||||
curl -fsSL -o nextcloud.tar.bz2 "https://download.nextcloud.com/server/releases/nextcloud-30.0.10.tar.bz2"; \
|
curl -fsSL -o nextcloud.tar.bz2 "https://download.nextcloud.com/server/releases/nextcloud-30.0.8.tar.bz2"; \
|
||||||
curl -fsSL -o nextcloud.tar.bz2.asc "https://download.nextcloud.com/server/releases/nextcloud-30.0.10.tar.bz2.asc"; \
|
curl -fsSL -o nextcloud.tar.bz2.asc "https://download.nextcloud.com/server/releases/nextcloud-30.0.8.tar.bz2.asc"; \
|
||||||
export GNUPGHOME="$(mktemp -d)"; \
|
export GNUPGHOME="$(mktemp -d)"; \
|
||||||
# gpg key from https://nextcloud.com/nextcloud.asc
|
# gpg key from https://nextcloud.com/nextcloud.asc
|
||||||
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 28806A878AE423A28372792ED75899B9A724937A; \
|
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 28806A878AE423A28372792ED75899B9A724937A; \
|
||||||
|
|
|
@ -23,39 +23,32 @@ run_as() {
|
||||||
run_path() {
|
run_path() {
|
||||||
local hook_folder_path="/docker-entrypoint-hooks.d/$1"
|
local hook_folder_path="/docker-entrypoint-hooks.d/$1"
|
||||||
local return_code=0
|
local return_code=0
|
||||||
local found=0
|
|
||||||
|
|
||||||
echo "=> Searching for hook scripts (*.sh) to run, located in the folder \"${hook_folder_path}\""
|
if ! [ -d "${hook_folder_path}" ]; then
|
||||||
|
echo "=> Skipping the folder \"${hook_folder_path}\", because it doesn't exist"
|
||||||
if ! [ -d "${hook_folder_path}" ] || directory_empty "${hook_folder_path}"; then
|
|
||||||
echo "==> Skipped: the \"$1\" folder is empty (or does not exist)"
|
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
find "${hook_folder_path}" -maxdepth 1 -iname '*.sh' '(' -type f -o -type l ')' -print | sort | (
|
echo "=> Searching for scripts (*.sh) to run, located in the folder: ${hook_folder_path}"
|
||||||
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
|
if ! [ -x "${script_file_path}" ]; then
|
||||||
echo "==> The script \"${script_file_path}\" was skipped, because it lacks the executable flag"
|
echo "==> The script \"${script_file_path}\" was skipped, because it didn't have the executable flag"
|
||||||
found=$((found-1))
|
|
||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "==> Running the script (cwd: $(pwd)): \"${script_file_path}\""
|
echo "==> Running the script (cwd: $(pwd)): \"${script_file_path}\""
|
||||||
found=$((found+1))
|
|
||||||
run_as "${script_file_path}" || return_code="$?"
|
run_as "${script_file_path}" || return_code="$?"
|
||||||
|
|
||||||
if [ "${return_code}" -ne "0" ]; then
|
if [ "${return_code}" -ne "0" ]; then
|
||||||
echo "==> Failed at executing script \"${script_file_path}\". Exit code: ${return_code}"
|
echo "==> Failed at executing \"${script_file_path}\". Exit code: ${return_code}"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "==> Finished executing the script: \"${script_file_path}\""
|
echo "==> Finished the script: \"${script_file_path}\""
|
||||||
done
|
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
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -121,21 +114,13 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP
|
||||||
# check if redis host is an unix socket path
|
# check if redis host is an unix socket path
|
||||||
if [ "$(echo "$REDIS_HOST" | cut -c1-1)" = "/" ]; then
|
if [ "$(echo "$REDIS_HOST" | cut -c1-1)" = "/" ]; then
|
||||||
if [ -n "${REDIS_HOST_PASSWORD+x}" ]; then
|
if [ -n "${REDIS_HOST_PASSWORD+x}" ]; then
|
||||||
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}\""
|
echo "session.save_path = \"unix://${REDIS_HOST}?auth=${REDIS_HOST_PASSWORD}\""
|
||||||
fi
|
|
||||||
else
|
else
|
||||||
echo "session.save_path = \"unix://${REDIS_HOST}\""
|
echo "session.save_path = \"unix://${REDIS_HOST}\""
|
||||||
fi
|
fi
|
||||||
# check if redis password has been set
|
# check if redis password has been set
|
||||||
elif [ -n "${REDIS_HOST_PASSWORD+x}" ]; then
|
elif [ -n "${REDIS_HOST_PASSWORD+x}" ]; then
|
||||||
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}\""
|
echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth=${REDIS_HOST_PASSWORD}\""
|
||||||
fi
|
|
||||||
else
|
else
|
||||||
echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}\""
|
echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}\""
|
||||||
fi
|
fi
|
||||||
|
@ -252,14 +237,12 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP
|
||||||
fi
|
fi
|
||||||
if [ -n "${NEXTCLOUD_TRUSTED_DOMAINS+x}" ]; then
|
if [ -n "${NEXTCLOUD_TRUSTED_DOMAINS+x}" ]; then
|
||||||
echo "Setting trusted domains…"
|
echo "Setting trusted domains…"
|
||||||
set -f # turn off glob
|
|
||||||
NC_TRUSTED_DOMAIN_IDX=1
|
NC_TRUSTED_DOMAIN_IDX=1
|
||||||
for DOMAIN in ${NEXTCLOUD_TRUSTED_DOMAINS}; do
|
for DOMAIN in $NEXTCLOUD_TRUSTED_DOMAINS ; do
|
||||||
DOMAIN=$(echo "${DOMAIN}" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')
|
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}\""
|
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))
|
NC_TRUSTED_DOMAIN_IDX=$((NC_TRUSTED_DOMAIN_IDX+1))
|
||||||
done
|
done
|
||||||
set +f # turn glob back on
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
run_path post-installation
|
run_path post-installation
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
# DO NOT EDIT: created by update.sh from Dockerfile-debian.template
|
# DO NOT EDIT: created by update.sh from Dockerfile-debian.template
|
||||||
FROM php:8.3-apache-bookworm
|
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
|
# entrypoint.sh and cron.sh dependencies
|
||||||
RUN set -ex; \
|
RUN set -ex; \
|
||||||
\
|
\
|
||||||
|
@ -65,10 +68,23 @@ RUN set -ex; \
|
||||||
zip \
|
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 will claim success even if one install fails, so we need to perform each install separately
|
||||||
pecl install APCu-5.1.24; \
|
pecl install APCu-5.1.24; \
|
||||||
pecl install igbinary-3.2.16; \
|
pecl install igbinary-3.2.16; \
|
||||||
pecl install imagick-3.8.0; \
|
|
||||||
pecl install memcached-3.3.0 \
|
pecl install memcached-3.3.0 \
|
||||||
--configureoptions 'enable-memcached-igbinary="yes"'; \
|
--configureoptions 'enable-memcached-igbinary="yes"'; \
|
||||||
pecl install redis-6.2.0 \
|
pecl install redis-6.2.0 \
|
||||||
|
@ -150,7 +166,7 @@ RUN { \
|
||||||
} > /etc/apache2/conf-available/apache-limits.conf; \
|
} > /etc/apache2/conf-available/apache-limits.conf; \
|
||||||
a2enconf apache-limits
|
a2enconf apache-limits
|
||||||
|
|
||||||
ENV NEXTCLOUD_VERSION 31.0.4
|
ENV NEXTCLOUD_VERSION 31.0.2
|
||||||
|
|
||||||
RUN set -ex; \
|
RUN set -ex; \
|
||||||
fetchDeps=" \
|
fetchDeps=" \
|
||||||
|
@ -160,8 +176,8 @@ RUN set -ex; \
|
||||||
apt-get update; \
|
apt-get update; \
|
||||||
apt-get install -y --no-install-recommends $fetchDeps; \
|
apt-get install -y --no-install-recommends $fetchDeps; \
|
||||||
\
|
\
|
||||||
curl -fsSL -o nextcloud.tar.bz2 "https://download.nextcloud.com/server/releases/nextcloud-31.0.4.tar.bz2"; \
|
curl -fsSL -o nextcloud.tar.bz2 "https://download.nextcloud.com/server/releases/nextcloud-31.0.2.tar.bz2"; \
|
||||||
curl -fsSL -o nextcloud.tar.bz2.asc "https://download.nextcloud.com/server/releases/nextcloud-31.0.4.tar.bz2.asc"; \
|
curl -fsSL -o nextcloud.tar.bz2.asc "https://download.nextcloud.com/server/releases/nextcloud-31.0.2.tar.bz2.asc"; \
|
||||||
export GNUPGHOME="$(mktemp -d)"; \
|
export GNUPGHOME="$(mktemp -d)"; \
|
||||||
# gpg key from https://nextcloud.com/nextcloud.asc
|
# gpg key from https://nextcloud.com/nextcloud.asc
|
||||||
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 28806A878AE423A28372792ED75899B9A724937A; \
|
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 28806A878AE423A28372792ED75899B9A724937A; \
|
||||||
|
|
|
@ -23,39 +23,32 @@ run_as() {
|
||||||
run_path() {
|
run_path() {
|
||||||
local hook_folder_path="/docker-entrypoint-hooks.d/$1"
|
local hook_folder_path="/docker-entrypoint-hooks.d/$1"
|
||||||
local return_code=0
|
local return_code=0
|
||||||
local found=0
|
|
||||||
|
|
||||||
echo "=> Searching for hook scripts (*.sh) to run, located in the folder \"${hook_folder_path}\""
|
if ! [ -d "${hook_folder_path}" ]; then
|
||||||
|
echo "=> Skipping the folder \"${hook_folder_path}\", because it doesn't exist"
|
||||||
if ! [ -d "${hook_folder_path}" ] || directory_empty "${hook_folder_path}"; then
|
|
||||||
echo "==> Skipped: the \"$1\" folder is empty (or does not exist)"
|
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
find "${hook_folder_path}" -maxdepth 1 -iname '*.sh' '(' -type f -o -type l ')' -print | sort | (
|
echo "=> Searching for scripts (*.sh) to run, located in the folder: ${hook_folder_path}"
|
||||||
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
|
if ! [ -x "${script_file_path}" ]; then
|
||||||
echo "==> The script \"${script_file_path}\" was skipped, because it lacks the executable flag"
|
echo "==> The script \"${script_file_path}\" was skipped, because it didn't have the executable flag"
|
||||||
found=$((found-1))
|
|
||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "==> Running the script (cwd: $(pwd)): \"${script_file_path}\""
|
echo "==> Running the script (cwd: $(pwd)): \"${script_file_path}\""
|
||||||
found=$((found+1))
|
|
||||||
run_as "${script_file_path}" || return_code="$?"
|
run_as "${script_file_path}" || return_code="$?"
|
||||||
|
|
||||||
if [ "${return_code}" -ne "0" ]; then
|
if [ "${return_code}" -ne "0" ]; then
|
||||||
echo "==> Failed at executing script \"${script_file_path}\". Exit code: ${return_code}"
|
echo "==> Failed at executing \"${script_file_path}\". Exit code: ${return_code}"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "==> Finished executing the script: \"${script_file_path}\""
|
echo "==> Finished the script: \"${script_file_path}\""
|
||||||
done
|
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
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -121,21 +114,13 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP
|
||||||
# check if redis host is an unix socket path
|
# check if redis host is an unix socket path
|
||||||
if [ "$(echo "$REDIS_HOST" | cut -c1-1)" = "/" ]; then
|
if [ "$(echo "$REDIS_HOST" | cut -c1-1)" = "/" ]; then
|
||||||
if [ -n "${REDIS_HOST_PASSWORD+x}" ]; then
|
if [ -n "${REDIS_HOST_PASSWORD+x}" ]; then
|
||||||
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}\""
|
echo "session.save_path = \"unix://${REDIS_HOST}?auth=${REDIS_HOST_PASSWORD}\""
|
||||||
fi
|
|
||||||
else
|
else
|
||||||
echo "session.save_path = \"unix://${REDIS_HOST}\""
|
echo "session.save_path = \"unix://${REDIS_HOST}\""
|
||||||
fi
|
fi
|
||||||
# check if redis password has been set
|
# check if redis password has been set
|
||||||
elif [ -n "${REDIS_HOST_PASSWORD+x}" ]; then
|
elif [ -n "${REDIS_HOST_PASSWORD+x}" ]; then
|
||||||
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}\""
|
echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth=${REDIS_HOST_PASSWORD}\""
|
||||||
fi
|
|
||||||
else
|
else
|
||||||
echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}\""
|
echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}\""
|
||||||
fi
|
fi
|
||||||
|
@ -252,14 +237,12 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP
|
||||||
fi
|
fi
|
||||||
if [ -n "${NEXTCLOUD_TRUSTED_DOMAINS+x}" ]; then
|
if [ -n "${NEXTCLOUD_TRUSTED_DOMAINS+x}" ]; then
|
||||||
echo "Setting trusted domains…"
|
echo "Setting trusted domains…"
|
||||||
set -f # turn off glob
|
|
||||||
NC_TRUSTED_DOMAIN_IDX=1
|
NC_TRUSTED_DOMAIN_IDX=1
|
||||||
for DOMAIN in ${NEXTCLOUD_TRUSTED_DOMAINS}; do
|
for DOMAIN in $NEXTCLOUD_TRUSTED_DOMAINS ; do
|
||||||
DOMAIN=$(echo "${DOMAIN}" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')
|
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}\""
|
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))
|
NC_TRUSTED_DOMAIN_IDX=$((NC_TRUSTED_DOMAIN_IDX+1))
|
||||||
done
|
done
|
||||||
set +f # turn glob back on
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
run_path post-installation
|
run_path post-installation
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
# DO NOT EDIT: created by update.sh from Dockerfile-alpine.template
|
# DO NOT EDIT: created by update.sh from Dockerfile-alpine.template
|
||||||
FROM php:8.3-fpm-alpine3.21
|
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
|
# entrypoint.sh and cron.sh dependencies
|
||||||
RUN set -ex; \
|
RUN set -ex; \
|
||||||
\
|
\
|
||||||
|
@ -62,10 +65,23 @@ RUN set -ex; \
|
||||||
zip \
|
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 will claim success even if one install fails, so we need to perform each install separately
|
||||||
pecl install APCu-5.1.24; \
|
pecl install APCu-5.1.24; \
|
||||||
pecl install igbinary-3.2.16; \
|
pecl install igbinary-3.2.16; \
|
||||||
pecl install imagick-3.8.0; \
|
|
||||||
pecl install memcached-3.3.0 \
|
pecl install memcached-3.3.0 \
|
||||||
--configureoptions 'enable-memcached-igbinary="yes"'; \
|
--configureoptions 'enable-memcached-igbinary="yes"'; \
|
||||||
pecl install redis-6.2.0 \
|
pecl install redis-6.2.0 \
|
||||||
|
@ -130,7 +146,7 @@ RUN { \
|
||||||
VOLUME /var/www/html
|
VOLUME /var/www/html
|
||||||
|
|
||||||
|
|
||||||
ENV NEXTCLOUD_VERSION 31.0.4
|
ENV NEXTCLOUD_VERSION 31.0.2
|
||||||
|
|
||||||
RUN set -ex; \
|
RUN set -ex; \
|
||||||
apk add --no-cache --virtual .fetch-deps \
|
apk add --no-cache --virtual .fetch-deps \
|
||||||
|
@ -138,8 +154,8 @@ RUN set -ex; \
|
||||||
gnupg \
|
gnupg \
|
||||||
; \
|
; \
|
||||||
\
|
\
|
||||||
curl -fsSL -o nextcloud.tar.bz2 "https://download.nextcloud.com/server/releases/nextcloud-31.0.4.tar.bz2"; \
|
curl -fsSL -o nextcloud.tar.bz2 "https://download.nextcloud.com/server/releases/nextcloud-31.0.2.tar.bz2"; \
|
||||||
curl -fsSL -o nextcloud.tar.bz2.asc "https://download.nextcloud.com/server/releases/nextcloud-31.0.4.tar.bz2.asc"; \
|
curl -fsSL -o nextcloud.tar.bz2.asc "https://download.nextcloud.com/server/releases/nextcloud-31.0.2.tar.bz2.asc"; \
|
||||||
export GNUPGHOME="$(mktemp -d)"; \
|
export GNUPGHOME="$(mktemp -d)"; \
|
||||||
# gpg key from https://nextcloud.com/nextcloud.asc
|
# gpg key from https://nextcloud.com/nextcloud.asc
|
||||||
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 28806A878AE423A28372792ED75899B9A724937A; \
|
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 28806A878AE423A28372792ED75899B9A724937A; \
|
||||||
|
|
|
@ -23,39 +23,32 @@ run_as() {
|
||||||
run_path() {
|
run_path() {
|
||||||
local hook_folder_path="/docker-entrypoint-hooks.d/$1"
|
local hook_folder_path="/docker-entrypoint-hooks.d/$1"
|
||||||
local return_code=0
|
local return_code=0
|
||||||
local found=0
|
|
||||||
|
|
||||||
echo "=> Searching for hook scripts (*.sh) to run, located in the folder \"${hook_folder_path}\""
|
if ! [ -d "${hook_folder_path}" ]; then
|
||||||
|
echo "=> Skipping the folder \"${hook_folder_path}\", because it doesn't exist"
|
||||||
if ! [ -d "${hook_folder_path}" ] || directory_empty "${hook_folder_path}"; then
|
|
||||||
echo "==> Skipped: the \"$1\" folder is empty (or does not exist)"
|
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
find "${hook_folder_path}" -maxdepth 1 -iname '*.sh' '(' -type f -o -type l ')' -print | sort | (
|
echo "=> Searching for scripts (*.sh) to run, located in the folder: ${hook_folder_path}"
|
||||||
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
|
if ! [ -x "${script_file_path}" ]; then
|
||||||
echo "==> The script \"${script_file_path}\" was skipped, because it lacks the executable flag"
|
echo "==> The script \"${script_file_path}\" was skipped, because it didn't have the executable flag"
|
||||||
found=$((found-1))
|
|
||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "==> Running the script (cwd: $(pwd)): \"${script_file_path}\""
|
echo "==> Running the script (cwd: $(pwd)): \"${script_file_path}\""
|
||||||
found=$((found+1))
|
|
||||||
run_as "${script_file_path}" || return_code="$?"
|
run_as "${script_file_path}" || return_code="$?"
|
||||||
|
|
||||||
if [ "${return_code}" -ne "0" ]; then
|
if [ "${return_code}" -ne "0" ]; then
|
||||||
echo "==> Failed at executing script \"${script_file_path}\". Exit code: ${return_code}"
|
echo "==> Failed at executing \"${script_file_path}\". Exit code: ${return_code}"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "==> Finished executing the script: \"${script_file_path}\""
|
echo "==> Finished the script: \"${script_file_path}\""
|
||||||
done
|
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
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -121,21 +114,13 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP
|
||||||
# check if redis host is an unix socket path
|
# check if redis host is an unix socket path
|
||||||
if [ "$(echo "$REDIS_HOST" | cut -c1-1)" = "/" ]; then
|
if [ "$(echo "$REDIS_HOST" | cut -c1-1)" = "/" ]; then
|
||||||
if [ -n "${REDIS_HOST_PASSWORD+x}" ]; then
|
if [ -n "${REDIS_HOST_PASSWORD+x}" ]; then
|
||||||
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}\""
|
echo "session.save_path = \"unix://${REDIS_HOST}?auth=${REDIS_HOST_PASSWORD}\""
|
||||||
fi
|
|
||||||
else
|
else
|
||||||
echo "session.save_path = \"unix://${REDIS_HOST}\""
|
echo "session.save_path = \"unix://${REDIS_HOST}\""
|
||||||
fi
|
fi
|
||||||
# check if redis password has been set
|
# check if redis password has been set
|
||||||
elif [ -n "${REDIS_HOST_PASSWORD+x}" ]; then
|
elif [ -n "${REDIS_HOST_PASSWORD+x}" ]; then
|
||||||
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}\""
|
echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth=${REDIS_HOST_PASSWORD}\""
|
||||||
fi
|
|
||||||
else
|
else
|
||||||
echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}\""
|
echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}\""
|
||||||
fi
|
fi
|
||||||
|
@ -252,14 +237,12 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP
|
||||||
fi
|
fi
|
||||||
if [ -n "${NEXTCLOUD_TRUSTED_DOMAINS+x}" ]; then
|
if [ -n "${NEXTCLOUD_TRUSTED_DOMAINS+x}" ]; then
|
||||||
echo "Setting trusted domains…"
|
echo "Setting trusted domains…"
|
||||||
set -f # turn off glob
|
|
||||||
NC_TRUSTED_DOMAIN_IDX=1
|
NC_TRUSTED_DOMAIN_IDX=1
|
||||||
for DOMAIN in ${NEXTCLOUD_TRUSTED_DOMAINS}; do
|
for DOMAIN in $NEXTCLOUD_TRUSTED_DOMAINS ; do
|
||||||
DOMAIN=$(echo "${DOMAIN}" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')
|
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}\""
|
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))
|
NC_TRUSTED_DOMAIN_IDX=$((NC_TRUSTED_DOMAIN_IDX+1))
|
||||||
done
|
done
|
||||||
set +f # turn glob back on
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
run_path post-installation
|
run_path post-installation
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
# DO NOT EDIT: created by update.sh from Dockerfile-debian.template
|
# DO NOT EDIT: created by update.sh from Dockerfile-debian.template
|
||||||
FROM php:8.3-fpm-bookworm
|
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
|
# entrypoint.sh and cron.sh dependencies
|
||||||
RUN set -ex; \
|
RUN set -ex; \
|
||||||
\
|
\
|
||||||
|
@ -65,10 +68,23 @@ RUN set -ex; \
|
||||||
zip \
|
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 will claim success even if one install fails, so we need to perform each install separately
|
||||||
pecl install APCu-5.1.24; \
|
pecl install APCu-5.1.24; \
|
||||||
pecl install igbinary-3.2.16; \
|
pecl install igbinary-3.2.16; \
|
||||||
pecl install imagick-3.8.0; \
|
|
||||||
pecl install memcached-3.3.0 \
|
pecl install memcached-3.3.0 \
|
||||||
--configureoptions 'enable-memcached-igbinary="yes"'; \
|
--configureoptions 'enable-memcached-igbinary="yes"'; \
|
||||||
pecl install redis-6.2.0 \
|
pecl install redis-6.2.0 \
|
||||||
|
@ -135,7 +151,7 @@ RUN { \
|
||||||
VOLUME /var/www/html
|
VOLUME /var/www/html
|
||||||
|
|
||||||
|
|
||||||
ENV NEXTCLOUD_VERSION 31.0.4
|
ENV NEXTCLOUD_VERSION 31.0.2
|
||||||
|
|
||||||
RUN set -ex; \
|
RUN set -ex; \
|
||||||
fetchDeps=" \
|
fetchDeps=" \
|
||||||
|
@ -145,8 +161,8 @@ RUN set -ex; \
|
||||||
apt-get update; \
|
apt-get update; \
|
||||||
apt-get install -y --no-install-recommends $fetchDeps; \
|
apt-get install -y --no-install-recommends $fetchDeps; \
|
||||||
\
|
\
|
||||||
curl -fsSL -o nextcloud.tar.bz2 "https://download.nextcloud.com/server/releases/nextcloud-31.0.4.tar.bz2"; \
|
curl -fsSL -o nextcloud.tar.bz2 "https://download.nextcloud.com/server/releases/nextcloud-31.0.2.tar.bz2"; \
|
||||||
curl -fsSL -o nextcloud.tar.bz2.asc "https://download.nextcloud.com/server/releases/nextcloud-31.0.4.tar.bz2.asc"; \
|
curl -fsSL -o nextcloud.tar.bz2.asc "https://download.nextcloud.com/server/releases/nextcloud-31.0.2.tar.bz2.asc"; \
|
||||||
export GNUPGHOME="$(mktemp -d)"; \
|
export GNUPGHOME="$(mktemp -d)"; \
|
||||||
# gpg key from https://nextcloud.com/nextcloud.asc
|
# gpg key from https://nextcloud.com/nextcloud.asc
|
||||||
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 28806A878AE423A28372792ED75899B9A724937A; \
|
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 28806A878AE423A28372792ED75899B9A724937A; \
|
||||||
|
|
|
@ -23,39 +23,32 @@ run_as() {
|
||||||
run_path() {
|
run_path() {
|
||||||
local hook_folder_path="/docker-entrypoint-hooks.d/$1"
|
local hook_folder_path="/docker-entrypoint-hooks.d/$1"
|
||||||
local return_code=0
|
local return_code=0
|
||||||
local found=0
|
|
||||||
|
|
||||||
echo "=> Searching for hook scripts (*.sh) to run, located in the folder \"${hook_folder_path}\""
|
if ! [ -d "${hook_folder_path}" ]; then
|
||||||
|
echo "=> Skipping the folder \"${hook_folder_path}\", because it doesn't exist"
|
||||||
if ! [ -d "${hook_folder_path}" ] || directory_empty "${hook_folder_path}"; then
|
|
||||||
echo "==> Skipped: the \"$1\" folder is empty (or does not exist)"
|
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
find "${hook_folder_path}" -maxdepth 1 -iname '*.sh' '(' -type f -o -type l ')' -print | sort | (
|
echo "=> Searching for scripts (*.sh) to run, located in the folder: ${hook_folder_path}"
|
||||||
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
|
if ! [ -x "${script_file_path}" ]; then
|
||||||
echo "==> The script \"${script_file_path}\" was skipped, because it lacks the executable flag"
|
echo "==> The script \"${script_file_path}\" was skipped, because it didn't have the executable flag"
|
||||||
found=$((found-1))
|
|
||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "==> Running the script (cwd: $(pwd)): \"${script_file_path}\""
|
echo "==> Running the script (cwd: $(pwd)): \"${script_file_path}\""
|
||||||
found=$((found+1))
|
|
||||||
run_as "${script_file_path}" || return_code="$?"
|
run_as "${script_file_path}" || return_code="$?"
|
||||||
|
|
||||||
if [ "${return_code}" -ne "0" ]; then
|
if [ "${return_code}" -ne "0" ]; then
|
||||||
echo "==> Failed at executing script \"${script_file_path}\". Exit code: ${return_code}"
|
echo "==> Failed at executing \"${script_file_path}\". Exit code: ${return_code}"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "==> Finished executing the script: \"${script_file_path}\""
|
echo "==> Finished the script: \"${script_file_path}\""
|
||||||
done
|
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
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -121,21 +114,13 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP
|
||||||
# check if redis host is an unix socket path
|
# check if redis host is an unix socket path
|
||||||
if [ "$(echo "$REDIS_HOST" | cut -c1-1)" = "/" ]; then
|
if [ "$(echo "$REDIS_HOST" | cut -c1-1)" = "/" ]; then
|
||||||
if [ -n "${REDIS_HOST_PASSWORD+x}" ]; then
|
if [ -n "${REDIS_HOST_PASSWORD+x}" ]; then
|
||||||
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}\""
|
echo "session.save_path = \"unix://${REDIS_HOST}?auth=${REDIS_HOST_PASSWORD}\""
|
||||||
fi
|
|
||||||
else
|
else
|
||||||
echo "session.save_path = \"unix://${REDIS_HOST}\""
|
echo "session.save_path = \"unix://${REDIS_HOST}\""
|
||||||
fi
|
fi
|
||||||
# check if redis password has been set
|
# check if redis password has been set
|
||||||
elif [ -n "${REDIS_HOST_PASSWORD+x}" ]; then
|
elif [ -n "${REDIS_HOST_PASSWORD+x}" ]; then
|
||||||
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}\""
|
echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth=${REDIS_HOST_PASSWORD}\""
|
||||||
fi
|
|
||||||
else
|
else
|
||||||
echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}\""
|
echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}\""
|
||||||
fi
|
fi
|
||||||
|
@ -252,14 +237,12 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP
|
||||||
fi
|
fi
|
||||||
if [ -n "${NEXTCLOUD_TRUSTED_DOMAINS+x}" ]; then
|
if [ -n "${NEXTCLOUD_TRUSTED_DOMAINS+x}" ]; then
|
||||||
echo "Setting trusted domains…"
|
echo "Setting trusted domains…"
|
||||||
set -f # turn off glob
|
|
||||||
NC_TRUSTED_DOMAIN_IDX=1
|
NC_TRUSTED_DOMAIN_IDX=1
|
||||||
for DOMAIN in ${NEXTCLOUD_TRUSTED_DOMAINS}; do
|
for DOMAIN in $NEXTCLOUD_TRUSTED_DOMAINS ; do
|
||||||
DOMAIN=$(echo "${DOMAIN}" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')
|
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}\""
|
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))
|
NC_TRUSTED_DOMAIN_IDX=$((NC_TRUSTED_DOMAIN_IDX+1))
|
||||||
done
|
done
|
||||||
set +f # turn glob back on
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
run_path post-installation
|
run_path post-installation
|
||||||
|
|
|
@ -1,5 +1,8 @@
|
||||||
FROM php:%%PHP_VERSION%%-%%VARIANT%%%%ALPINE_VERSION%%
|
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
|
# entrypoint.sh and cron.sh dependencies
|
||||||
RUN set -ex; \
|
RUN set -ex; \
|
||||||
\
|
\
|
||||||
|
@ -61,10 +64,23 @@ RUN set -ex; \
|
||||||
zip \
|
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 will claim success even if one install fails, so we need to perform each install separately
|
||||||
pecl install APCu-%%APCU_VERSION%%; \
|
pecl install APCu-%%APCU_VERSION%%; \
|
||||||
pecl install igbinary-%%IGBINARY_VERSION%%; \
|
pecl install igbinary-%%IGBINARY_VERSION%%; \
|
||||||
pecl install imagick-%%IMAGICK_VERSION%%; \
|
|
||||||
pecl install memcached-%%MEMCACHED_VERSION%% \
|
pecl install memcached-%%MEMCACHED_VERSION%% \
|
||||||
--configureoptions 'enable-memcached-igbinary="yes"'; \
|
--configureoptions 'enable-memcached-igbinary="yes"'; \
|
||||||
pecl install redis-%%REDIS_VERSION%% \
|
pecl install redis-%%REDIS_VERSION%% \
|
||||||
|
|
|
@ -1,5 +1,8 @@
|
||||||
FROM php:%%PHP_VERSION%%-%%VARIANT%%-%%DEBIAN_VERSION%%
|
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
|
# entrypoint.sh and cron.sh dependencies
|
||||||
RUN set -ex; \
|
RUN set -ex; \
|
||||||
\
|
\
|
||||||
|
@ -64,10 +67,23 @@ RUN set -ex; \
|
||||||
zip \
|
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 will claim success even if one install fails, so we need to perform each install separately
|
||||||
pecl install APCu-%%APCU_VERSION%%; \
|
pecl install APCu-%%APCU_VERSION%%; \
|
||||||
pecl install igbinary-%%IGBINARY_VERSION%%; \
|
pecl install igbinary-%%IGBINARY_VERSION%%; \
|
||||||
pecl install imagick-%%IMAGICK_VERSION%%; \
|
|
||||||
pecl install memcached-%%MEMCACHED_VERSION%% \
|
pecl install memcached-%%MEMCACHED_VERSION%% \
|
||||||
--configureoptions 'enable-memcached-igbinary="yes"'; \
|
--configureoptions 'enable-memcached-igbinary="yes"'; \
|
||||||
pecl install redis-%%REDIS_VERSION%% \
|
pecl install redis-%%REDIS_VERSION%% \
|
||||||
|
|
28
README.md
28
README.md
|
@ -82,7 +82,7 @@ Database:
|
||||||
```console
|
```console
|
||||||
$ docker run -d \
|
$ docker run -d \
|
||||||
-v db:/var/lib/mysql \
|
-v db:/var/lib/mysql \
|
||||||
mariadb:lts
|
mariadb:10.11
|
||||||
```
|
```
|
||||||
|
|
||||||
### Additional volumes
|
### Additional volumes
|
||||||
|
@ -403,11 +403,8 @@ Make sure to pass in values for `MYSQL_ROOT_PASSWORD` and `MYSQL_PASSWORD` varia
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
services:
|
services:
|
||||||
# Note: MariaDB is external service. You can find more information about the configuration here:
|
|
||||||
# https://hub.docker.com/_/mariadb
|
|
||||||
db:
|
db:
|
||||||
# Note: Check the recommend version here: https://docs.nextcloud.com/server/latest/admin_manual/installation/system_requirements.html#server
|
image: mariadb:10.11
|
||||||
image: mariadb:lts
|
|
||||||
restart: always
|
restart: always
|
||||||
command: --transaction-isolation=READ-COMMITTED
|
command: --transaction-isolation=READ-COMMITTED
|
||||||
volumes:
|
volumes:
|
||||||
|
@ -418,8 +415,6 @@ services:
|
||||||
- MYSQL_DATABASE=nextcloud
|
- MYSQL_DATABASE=nextcloud
|
||||||
- MYSQL_USER=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:
|
redis:
|
||||||
image: redis:alpine
|
image: redis:alpine
|
||||||
restart: always
|
restart: always
|
||||||
|
@ -456,11 +451,8 @@ Make sure to pass in values for `MYSQL_ROOT_PASSWORD` and `MYSQL_PASSWORD` varia
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
services:
|
services:
|
||||||
# Note: MariaDB is an external service. You can find more information about the configuration here:
|
|
||||||
# https://hub.docker.com/_/mariadb
|
|
||||||
db:
|
db:
|
||||||
# Note: Check the recommend version here: https://docs.nextcloud.com/server/latest/admin_manual/installation/system_requirements.html#server
|
image: mariadb:10.11
|
||||||
image: mariadb:lts
|
|
||||||
restart: always
|
restart: always
|
||||||
command: --transaction-isolation=READ-COMMITTED
|
command: --transaction-isolation=READ-COMMITTED
|
||||||
volumes:
|
volumes:
|
||||||
|
@ -471,8 +463,6 @@ services:
|
||||||
- MYSQL_DATABASE=nextcloud
|
- MYSQL_DATABASE=nextcloud
|
||||||
- MYSQL_USER=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:
|
redis:
|
||||||
image: redis:alpine
|
image: redis:alpine
|
||||||
restart: always
|
restart: always
|
||||||
|
@ -491,17 +481,14 @@ services:
|
||||||
- MYSQL_USER=nextcloud
|
- MYSQL_USER=nextcloud
|
||||||
- MYSQL_HOST=db
|
- MYSQL_HOST=db
|
||||||
|
|
||||||
# Note: Nginx is an external service. You can find more information about the configuration here:
|
|
||||||
# https://hub.docker.com/_/nginx/
|
|
||||||
web:
|
web:
|
||||||
image: nginx:alpine-slim
|
image: nginx
|
||||||
restart: always
|
restart: always
|
||||||
ports:
|
ports:
|
||||||
- 8080:80
|
- 8080:80
|
||||||
depends_on:
|
depends_on:
|
||||||
- app
|
- app
|
||||||
volumes:
|
volumes:
|
||||||
# https://docs.nextcloud.com/server/latest/admin_manual/installation/nginx.html
|
|
||||||
- ./nginx.conf:/etc/nginx/nginx.conf:ro
|
- ./nginx.conf:/etc/nginx/nginx.conf:ro
|
||||||
volumes_from:
|
volumes_from:
|
||||||
- app
|
- app
|
||||||
|
@ -527,11 +514,8 @@ Example:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
services:
|
services:
|
||||||
# Note: PostgreSQL is external service. You can find more information about the configuration here:
|
|
||||||
# https://hub.docker.com/_/postgres
|
|
||||||
db:
|
db:
|
||||||
# Note: Check the recommend version here: https://docs.nextcloud.com/server/latest/admin_manual/installation/system_requirements.html#server
|
image: postgres
|
||||||
image: postgres:alpine
|
|
||||||
restart: always
|
restart: always
|
||||||
volumes:
|
volumes:
|
||||||
- db:/var/lib/postgresql/data
|
- db:/var/lib/postgresql/data
|
||||||
|
@ -543,8 +527,6 @@ services:
|
||||||
- postgres_db
|
- postgres_db
|
||||||
- postgres_password
|
- postgres_password
|
||||||
- postgres_user
|
- postgres_user
|
||||||
# Note: Redis is an external service. You can find more information about the configuration here:
|
|
||||||
# https://hub.docker.com/_/redis
|
|
||||||
redis:
|
redis:
|
||||||
image: redis:alpine
|
image: redis:alpine
|
||||||
restart: always
|
restart: always
|
||||||
|
|
|
@ -23,39 +23,32 @@ run_as() {
|
||||||
run_path() {
|
run_path() {
|
||||||
local hook_folder_path="/docker-entrypoint-hooks.d/$1"
|
local hook_folder_path="/docker-entrypoint-hooks.d/$1"
|
||||||
local return_code=0
|
local return_code=0
|
||||||
local found=0
|
|
||||||
|
|
||||||
echo "=> Searching for hook scripts (*.sh) to run, located in the folder \"${hook_folder_path}\""
|
if ! [ -d "${hook_folder_path}" ]; then
|
||||||
|
echo "=> Skipping the folder \"${hook_folder_path}\", because it doesn't exist"
|
||||||
if ! [ -d "${hook_folder_path}" ] || directory_empty "${hook_folder_path}"; then
|
|
||||||
echo "==> Skipped: the \"$1\" folder is empty (or does not exist)"
|
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
find "${hook_folder_path}" -maxdepth 1 -iname '*.sh' '(' -type f -o -type l ')' -print | sort | (
|
echo "=> Searching for scripts (*.sh) to run, located in the folder: ${hook_folder_path}"
|
||||||
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
|
if ! [ -x "${script_file_path}" ]; then
|
||||||
echo "==> The script \"${script_file_path}\" was skipped, because it lacks the executable flag"
|
echo "==> The script \"${script_file_path}\" was skipped, because it didn't have the executable flag"
|
||||||
found=$((found-1))
|
|
||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "==> Running the script (cwd: $(pwd)): \"${script_file_path}\""
|
echo "==> Running the script (cwd: $(pwd)): \"${script_file_path}\""
|
||||||
found=$((found+1))
|
|
||||||
run_as "${script_file_path}" || return_code="$?"
|
run_as "${script_file_path}" || return_code="$?"
|
||||||
|
|
||||||
if [ "${return_code}" -ne "0" ]; then
|
if [ "${return_code}" -ne "0" ]; then
|
||||||
echo "==> Failed at executing script \"${script_file_path}\". Exit code: ${return_code}"
|
echo "==> Failed at executing \"${script_file_path}\". Exit code: ${return_code}"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "==> Finished executing the script: \"${script_file_path}\""
|
echo "==> Finished the script: \"${script_file_path}\""
|
||||||
done
|
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
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -121,21 +114,13 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP
|
||||||
# check if redis host is an unix socket path
|
# check if redis host is an unix socket path
|
||||||
if [ "$(echo "$REDIS_HOST" | cut -c1-1)" = "/" ]; then
|
if [ "$(echo "$REDIS_HOST" | cut -c1-1)" = "/" ]; then
|
||||||
if [ -n "${REDIS_HOST_PASSWORD+x}" ]; then
|
if [ -n "${REDIS_HOST_PASSWORD+x}" ]; then
|
||||||
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}\""
|
echo "session.save_path = \"unix://${REDIS_HOST}?auth=${REDIS_HOST_PASSWORD}\""
|
||||||
fi
|
|
||||||
else
|
else
|
||||||
echo "session.save_path = \"unix://${REDIS_HOST}\""
|
echo "session.save_path = \"unix://${REDIS_HOST}\""
|
||||||
fi
|
fi
|
||||||
# check if redis password has been set
|
# check if redis password has been set
|
||||||
elif [ -n "${REDIS_HOST_PASSWORD+x}" ]; then
|
elif [ -n "${REDIS_HOST_PASSWORD+x}" ]; then
|
||||||
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}\""
|
echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth=${REDIS_HOST_PASSWORD}\""
|
||||||
fi
|
|
||||||
else
|
else
|
||||||
echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}\""
|
echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}\""
|
||||||
fi
|
fi
|
||||||
|
@ -251,14 +236,12 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP
|
||||||
fi
|
fi
|
||||||
if [ -n "${NEXTCLOUD_TRUSTED_DOMAINS+x}" ]; then
|
if [ -n "${NEXTCLOUD_TRUSTED_DOMAINS+x}" ]; then
|
||||||
echo "Setting trusted domains…"
|
echo "Setting trusted domains…"
|
||||||
set -f # turn off glob
|
|
||||||
NC_TRUSTED_DOMAIN_IDX=1
|
NC_TRUSTED_DOMAIN_IDX=1
|
||||||
for DOMAIN in ${NEXTCLOUD_TRUSTED_DOMAINS}; do
|
for DOMAIN in $NEXTCLOUD_TRUSTED_DOMAINS ; do
|
||||||
DOMAIN=$(echo "${DOMAIN}" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')
|
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}\""
|
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))
|
NC_TRUSTED_DOMAIN_IDX=$((NC_TRUSTED_DOMAIN_IDX+1))
|
||||||
done
|
done
|
||||||
set +f # turn glob back on
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
run_path post-installation
|
run_path post-installation
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
set -Eeuo pipefail
|
set -Eeuo pipefail
|
||||||
|
|
||||||
stable_channel='31.0.4'
|
stable_channel='30.0.8'
|
||||||
|
|
||||||
self="$(basename "$BASH_SOURCE")"
|
self="$(basename "$BASH_SOURCE")"
|
||||||
cd "$(dirname "$(readlink -f "$BASH_SOURCE")")"
|
cd "$(dirname "$(readlink -f "$BASH_SOURCE")")"
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
31.0.4
|
31.0.2
|
||||||
|
|
|
@ -10,8 +10,8 @@ declare -A debian_version=(
|
||||||
)
|
)
|
||||||
|
|
||||||
declare -A php_version=(
|
declare -A php_version=(
|
||||||
[29]='8.2'
|
[default]='8.2'
|
||||||
[default]='8.3'
|
[31]='8.3'
|
||||||
)
|
)
|
||||||
|
|
||||||
declare -A cmd=(
|
declare -A cmd=(
|
||||||
|
@ -55,7 +55,7 @@ igbinary_version="$(
|
||||||
)"
|
)"
|
||||||
|
|
||||||
imagick_version="$(
|
imagick_version="$(
|
||||||
git ls-remote --tags https://github.com/imagick/imagick.git \
|
git ls-remote --tags https://github.com/mkoppanen/imagick.git \
|
||||||
| cut -d/ -f3 \
|
| cut -d/ -f3 \
|
||||||
| grep -viE '[a-z]' \
|
| grep -viE '[a-z]' \
|
||||||
| tr -d '^{}' \
|
| tr -d '^{}' \
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
{
|
{
|
||||||
"31": {
|
"31": {
|
||||||
"branch": "31",
|
"branch": "31",
|
||||||
"version": "31.0.4",
|
"version": "31.0.2",
|
||||||
"url": "https://download.nextcloud.com/server/releases/nextcloud-31.0.4.tar.bz2",
|
"url": "https://download.nextcloud.com/server/releases/nextcloud-31.0.2.tar.bz2",
|
||||||
"ascUrl": "https://download.nextcloud.com/server/releases/nextcloud-31.0.4.tar.bz2.asc",
|
"ascUrl": "https://download.nextcloud.com/server/releases/nextcloud-31.0.2.tar.bz2.asc",
|
||||||
"variants": {
|
"variants": {
|
||||||
"apache": {
|
"apache": {
|
||||||
"variant": "apache",
|
"variant": "apache",
|
||||||
|
@ -27,35 +27,35 @@
|
||||||
},
|
},
|
||||||
"30": {
|
"30": {
|
||||||
"branch": "30",
|
"branch": "30",
|
||||||
"version": "30.0.10",
|
"version": "30.0.8",
|
||||||
"url": "https://download.nextcloud.com/server/releases/nextcloud-30.0.10.tar.bz2",
|
"url": "https://download.nextcloud.com/server/releases/nextcloud-30.0.8.tar.bz2",
|
||||||
"ascUrl": "https://download.nextcloud.com/server/releases/nextcloud-30.0.10.tar.bz2.asc",
|
"ascUrl": "https://download.nextcloud.com/server/releases/nextcloud-30.0.8.tar.bz2.asc",
|
||||||
"variants": {
|
"variants": {
|
||||||
"apache": {
|
"apache": {
|
||||||
"variant": "apache",
|
"variant": "apache",
|
||||||
"base": "debian",
|
"base": "debian",
|
||||||
"baseVersion": "bookworm",
|
"baseVersion": "bookworm",
|
||||||
"phpVersion": "8.3"
|
"phpVersion": "8.2"
|
||||||
},
|
},
|
||||||
"fpm": {
|
"fpm": {
|
||||||
"variant": "fpm",
|
"variant": "fpm",
|
||||||
"base": "debian",
|
"base": "debian",
|
||||||
"baseVersion": "bookworm",
|
"baseVersion": "bookworm",
|
||||||
"phpVersion": "8.3"
|
"phpVersion": "8.2"
|
||||||
},
|
},
|
||||||
"fpm-alpine": {
|
"fpm-alpine": {
|
||||||
"variant": "fpm-alpine",
|
"variant": "fpm-alpine",
|
||||||
"base": "alpine",
|
"base": "alpine",
|
||||||
"baseVersion": "3.21",
|
"baseVersion": "3.21",
|
||||||
"phpVersion": "8.3"
|
"phpVersion": "8.2"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"29": {
|
"29": {
|
||||||
"branch": "29",
|
"branch": "29",
|
||||||
"version": "29.0.16",
|
"version": "29.0.14",
|
||||||
"url": "https://download.nextcloud.com/server/releases/nextcloud-29.0.16.tar.bz2",
|
"url": "https://download.nextcloud.com/server/releases/nextcloud-29.0.14.tar.bz2",
|
||||||
"ascUrl": "https://download.nextcloud.com/server/releases/nextcloud-29.0.16.tar.bz2.asc",
|
"ascUrl": "https://download.nextcloud.com/server/releases/nextcloud-29.0.14.tar.bz2.asc",
|
||||||
"variants": {
|
"variants": {
|
||||||
"apache": {
|
"apache": {
|
||||||
"variant": "apache",
|
"variant": "apache",
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue