mirror of
https://github.com/nextcloud/all-in-one.git
synced 2024-12-27 01:02:10 +08:00
a0eaea5e95
Signed-off-by: Simon L. <szaimen@e.mail.de>
90 lines
3.5 KiB
Docker
90 lines
3.5 KiB
Docker
# syntax=docker/dockerfile:latest
|
|
FROM caddy:2.8.4-alpine AS caddy
|
|
|
|
# From https://github.com/docker-library/httpd/blob/master/2.4/alpine/Dockerfile
|
|
FROM httpd:2.4.62-alpine3.21
|
|
|
|
COPY --from=caddy /usr/bin/caddy /usr/bin/caddy
|
|
|
|
COPY --chown=33:33 Caddyfile /Caddyfile
|
|
COPY --chmod=664 nextcloud.conf /usr/local/apache2/conf/nextcloud.conf
|
|
COPY --chmod=664 supervisord.conf /supervisord.conf
|
|
COPY --chmod=775 start.sh /start.sh
|
|
COPY --chmod=775 healthcheck.sh /healthcheck.sh
|
|
|
|
VOLUME /mnt/data
|
|
|
|
RUN set -ex; \
|
|
apk upgrade --no-cache -a; \
|
|
apk add --no-cache shadow; \
|
|
groupmod -g 33 www-data; \
|
|
usermod -u 33 -g 33 www-data; \
|
|
apk del --no-cache shadow; \
|
|
\
|
|
mkdir -p /mnt/data; \
|
|
chown -R www-data:www-data /mnt/data; \
|
|
chown -R 777 /tmp; \
|
|
\
|
|
apk add --no-cache \
|
|
bash \
|
|
supervisor \
|
|
tzdata \
|
|
ca-certificates \
|
|
openssl \
|
|
bind-tools \
|
|
netcat-openbsd; \
|
|
\
|
|
sed -i \
|
|
-e '/^Listen /d' \
|
|
-e 's/^#\(LoadModule .*mod_rewrite.so\)/\1/' \
|
|
-e 's/^#\(LoadModule .*mod_headers.so\)/\1/' \
|
|
-e 's/^#\(LoadModule .*mod_proxy.so\)/\1/' \
|
|
-e 's/^#\(LoadModule .*mod_proxy_fcgi.so\)/\1/' \
|
|
-e 's/^#\(LoadModule .*mod_setenvif.so\)/\1/' \
|
|
-e 's/^#\(LoadModule .*mod_env.so\)/\1/' \
|
|
-e 's/^#\(LoadModule .*mod_mime.so\)/\1/' \
|
|
-e 's/^#\(LoadModule .*mod_dir.so\)/\1/' \
|
|
-e 's/^#\(LoadModule .*mod_authz_core.so\)/\1/' \
|
|
-e 's/^#\(LoadModule .*mod_alias.so\)/\1/' \
|
|
-e 's/^#\(LoadModule .*mod_mpm_event.so\)/\1/' \
|
|
-e 's/^#\(LoadModule .*mod_brotli.so\)/\1/' \
|
|
-e 's/\(LoadModule .*mod_mpm_worker.so\)/#\1/' \
|
|
-e 's/\(LoadModule .*mod_mpm_prefork.so\)/#\1/' \
|
|
-e 's/\(ScriptAlias \)/#\1/' \
|
|
/usr/local/apache2/conf/httpd.conf; \
|
|
echo "Include conf/nextcloud.conf" | tee -a /usr/local/apache2/conf/httpd.conf; \
|
|
echo "ServerName localhost" | tee -a /usr/local/apache2/conf/httpd.conf; \
|
|
# Sync this with max db connections and pm.max_children
|
|
# We don't actually expect so many workers but don't want to limit it artificially because people will report issues otherwise.
|
|
sed -i 's|MaxRequestWorkers.*|MaxRequestWorkers 5000|' /usr/local/apache2/conf/extra/httpd-mpm.conf; \
|
|
grep -q '<IfModule mpm_event_module>' /usr/local/apache2/conf/extra/httpd-mpm.conf; \
|
|
# ServerLimit needs to be set to MaxRequestWorkers divided by ThreadsPerChild which is set to 25 by default
|
|
sed -i '/<IfModule mpm_event_module>/a\ \ \ \ ServerLimit 200' /usr/local/apache2/conf/extra/httpd-mpm.conf; \
|
|
\
|
|
rm -rf /usr/local/apache2/conf/original /var/www; \
|
|
mkdir -p /var/www; \
|
|
chown -R www-data:www-data /var/www; \
|
|
\
|
|
mkdir /var/log/supervisord; \
|
|
mkdir /var/run/supervisord; \
|
|
chown www-data:www-data /var/run/supervisord; \
|
|
chown www-data:www-data /var/log/supervisord; \
|
|
chmod 777 /var/run/supervisord; \
|
|
chmod 777 /var/log/supervisord; \
|
|
\
|
|
chown -R www-data:www-data /usr/local/apache2; \
|
|
chmod +r -R /usr/local/apache2; \
|
|
mkdir -p /usr/local/apache2/logs; \
|
|
chmod 777 -R /home/www-data; \
|
|
chmod 777 -R /usr/local/apache2/logs; \
|
|
rm -rf /usr/local/apache2/cgi-bin/; \
|
|
\
|
|
echo "root:$(openssl rand -base64 12)" | chpasswd
|
|
|
|
USER 33
|
|
|
|
ENTRYPOINT ["/start.sh"]
|
|
CMD ["/usr/bin/supervisord", "-c", "/supervisord.conf"]
|
|
|
|
HEALTHCHECK CMD /healthcheck.sh
|
|
LABEL com.centurylinklabs.watchtower.enable="false"
|