Merge pull request #2490 from nextcloud/apache-dockerfile

optimze apache dockerfile
This commit is contained in:
Simon L 2023-05-19 13:39:01 +02:00 committed by GitHub
commit 4adb748970
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -3,83 +3,73 @@ FROM caddy:2.6.4-alpine as caddy
FROM httpd:2.4.57-alpine3.17 FROM httpd:2.4.57-alpine3.17
COPY --from=caddy /usr/bin/caddy /usr/bin/caddy
COPY --chown=www-data:www-data 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; \ RUN set -ex; \
apk add --no-cache shadow; \ apk add --no-cache shadow; \
groupmod -g 333 xfs; \ groupmod -g 333 xfs; \
usermod -u 333 -g 333 xfs; \ usermod -u 333 -g 333 xfs; \
groupmod -g 33 www-data; \ groupmod -g 33 www-data; \
usermod -u 33 -g 33 www-data; \ usermod -u 33 -g 33 www-data; \
apk del --no-cache shadow apk del --no-cache shadow; \
\
RUN mkdir -p /mnt/data; \ mkdir -p /mnt/data; \
chown www-data:www-data /mnt/data; chown -R www-data:www-data /mnt/data; \
\
VOLUME /mnt/data
RUN set -ex; \
apk add --no-cache \ apk add --no-cache \
bash \ bash \
supervisor \ supervisor \
wget \
tzdata \ tzdata \
ca-certificates \ ca-certificates \
openssl \ openssl \
netcat-openbsd netcat-openbsd; \
\
COPY --from=caddy /usr/bin/caddy /usr/bin/ sed -i \
RUN chmod +x /usr/bin/caddy -e '/^Listen /d' \
-e 's/^#\(LoadModule .*mod_rewrite.so\)/\1/' \
RUN sed -i \ -e 's/^#\(LoadModule .*mod_headers.so\)/\1/' \
-e '/^Listen /d' \ -e 's/^#\(LoadModule .*mod_proxy.so\)/\1/' \
-e 's/^#\(LoadModule .*mod_rewrite.so\)/\1/' \ -e 's/^#\(LoadModule .*mod_proxy_fcgi.so\)/\1/' \
-e 's/^#\(LoadModule .*mod_headers.so\)/\1/' \ -e 's/^#\(LoadModule .*mod_setenvif.so\)/\1/' \
-e 's/^#\(LoadModule .*mod_proxy.so\)/\1/' \ -e 's/^#\(LoadModule .*mod_env.so\)/\1/' \
-e 's/^#\(LoadModule .*mod_proxy_fcgi.so\)/\1/' \ -e 's/^#\(LoadModule .*mod_mime.so\)/\1/' \
-e 's/^#\(LoadModule .*mod_setenvif.so\)/\1/' \ -e 's/^#\(LoadModule .*mod_dir.so\)/\1/' \
-e 's/^#\(LoadModule .*mod_env.so\)/\1/' \ -e 's/^#\(LoadModule .*mod_authz_core.so\)/\1/' \
-e 's/^#\(LoadModule .*mod_mime.so\)/\1/' \ -e 's/^#\(LoadModule .*mod_alias.so\)/\1/' \
-e 's/^#\(LoadModule .*mod_dir.so\)/\1/' \ -e 's/^#\(LoadModule .*mod_mpm_event.so\)/\1/' \
-e 's/^#\(LoadModule .*mod_authz_core.so\)/\1/' \ -e 's/\(LoadModule .*mod_mpm_worker.so\)/#\1/' \
-e 's/^#\(LoadModule .*mod_alias.so\)/\1/' \ -e 's/\(LoadModule .*mod_mpm_prefork.so\)/#\1/' \
-e 's/^#\(LoadModule .*mod_mpm_event.so\)/\1/' \ /usr/local/apache2/conf/httpd.conf; \
-e 's/\(LoadModule .*mod_mpm_worker.so\)/#\1/' \ echo "Include conf/nextcloud.conf" | tee -a /usr/local/apache2/conf/httpd.conf; \
-e 's/\(LoadModule .*mod_mpm_prefork.so\)/#\1/' \ echo "ServerName localhost" | tee -a /usr/local/apache2/conf/httpd.conf; \
conf/httpd.conf; \ \
echo "Include conf/nextcloud.conf" | tee -a conf/httpd.conf; \ rm -rf /usr/local/apache2/conf/original /var/www; \
echo "ServerName localhost" | tee -a conf/httpd.conf mkdir -p /var/www; \
chown -R www-data:www-data /var/www; \
COPY nextcloud.conf conf \
mkdir /var/log/supervisord; \
RUN set -ex; \
rm -rf conf/original conf/original && \
rm -rf /var/www/html/* && \
mkdir /var/www && \
chown -R www-data:www-data /var/www;
RUN mkdir /var/log/supervisord; \
mkdir /var/run/supervisord; \ mkdir /var/run/supervisord; \
chown www-data:www-data /var/run/supervisord; \ chown www-data:www-data /var/run/supervisord; \
chown www-data:www-data /var/log/supervisord; chown www-data:www-data /var/log/supervisord; \
\
COPY Caddyfile /
COPY start.sh /usr/bin/
COPY healthcheck.sh /usr/bin/
COPY supervisord.conf /
RUN chmod +x /usr/bin/start.sh; \
chmod +x /usr/bin/healthcheck.sh; \
chmod +r /supervisord.conf; \
chown www-data:www-data /Caddyfile; \
chown -R www-data:www-data /usr/local/apache2; \ chown -R www-data:www-data /usr/local/apache2; \
chmod +r -R /usr/local/apache2 chmod +r -R /usr/local/apache2; \
\
# Give root a random password echo "root:$(openssl rand -base64 12)" | chpasswd
RUN echo "root:$(openssl rand -base64 12)" | chpasswd
USER www-data USER www-data
ENTRYPOINT ["start.sh"] ENTRYPOINT ["/start.sh"]
CMD ["/usr/bin/supervisord", "-c", "/supervisord.conf"] CMD ["/usr/bin/supervisord", "-c", "/supervisord.conf"]
HEALTHCHECK CMD healthcheck.sh HEALTHCHECK CMD /healthcheck.sh
LABEL com.centurylinklabs.watchtower.monitor-only="true" LABEL com.centurylinklabs.watchtower.monitor-only="true"