-
Notifications
You must be signed in to change notification settings - Fork 84
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
ef73b7d
commit 0566751
Showing
47 changed files
with
7,574 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,172 @@ | ||
# | ||
# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh" | ||
# | ||
# PLEASE DO NOT EDIT IT DIRECTLY. | ||
# | ||
|
||
# from https://downloads.joomla.org/technical-requirements | ||
FROM php:8.0-apache | ||
LABEL maintainer="Llewellyn van der Merwe <[email protected]> (@Llewellynvdm), Harald Leithner <[email protected]> (@HLeithner)" | ||
|
||
# Disable remote database security requirements. | ||
ENV JOOMLA_INSTALLATION_DISABLE_LOCALHOST_CHECK=1 | ||
RUN set -eux; \ | ||
apt-get update; \ | ||
apt-get install -y --no-install-recommends \ | ||
# Ghostscript is required for rendering PDF previews | ||
ghostscript \ | ||
; \ | ||
rm -rf /var/lib/apt/lists/* | ||
|
||
# install the PHP extensions we need. | ||
RUN set -ex; \ | ||
\ | ||
savedAptMark="$(apt-mark showmanual)"; \ | ||
\ | ||
apt-get update; \ | ||
apt-get install -y --no-install-recommends \ | ||
libbz2-dev \ | ||
libgmp-dev \ | ||
libicu-dev \ | ||
libfreetype6-dev \ | ||
libjpeg-dev \ | ||
libldap2-dev \ | ||
libmemcached-dev \ | ||
libmagickwand-dev \ | ||
libpq-dev \ | ||
libpng-dev \ | ||
libwebp-dev \ | ||
libzip-dev \ | ||
; \ | ||
\ | ||
docker-php-ext-configure gd \ | ||
--with-freetype \ | ||
--with-jpeg \ | ||
--with-webp \ | ||
; \ | ||
debMultiarch="$(dpkg-architecture --query DEB_BUILD_MULTIARCH)"; \ | ||
docker-php-ext-configure ldap --with-libdir="lib/$debMultiarch"; \ | ||
docker-php-ext-install -j "$(nproc)" \ | ||
bz2 \ | ||
bcmath \ | ||
exif \ | ||
gd \ | ||
gmp \ | ||
intl \ | ||
ldap \ | ||
mysqli \ | ||
pdo_mysql \ | ||
pdo_pgsql \ | ||
pgsql \ | ||
zip \ | ||
; \ | ||
# https://pecl.php.net/package/imagick | ||
pecl install imagick-3.7.0; \ | ||
docker-php-ext-enable imagick; \ | ||
rm -r /tmp/pear; \ | ||
\ | ||
# some misbehaving extensions end up outputting to stdout | ||
out="$(php -r 'exit(0);')"; \ | ||
[ -z "$out" ]; \ | ||
err="$(php -r 'exit(0);' 3>&1 1>&2 2>&3)"; \ | ||
[ -z "$err" ]; \ | ||
\ | ||
extDir="$(php -r 'echo ini_get("extension_dir");')"; \ | ||
[ -d "$extDir" ]; \ | ||
# pecl will claim success even if one install fails, so we need to perform each install separately | ||
pecl install APCu-5.1.23; \ | ||
pecl install memcached-3.2.0; \ | ||
pecl install redis-6.0.2; \ | ||
\ | ||
docker-php-ext-enable \ | ||
apcu \ | ||
memcached \ | ||
redis \ | ||
; \ | ||
rm -r /tmp/pear; \ | ||
\ | ||
# reset apt-mark's "manual" list so that "purge --auto-remove" will remove all build dependencies | ||
apt-mark auto '.*' > /dev/null; \ | ||
apt-mark manual $savedAptMark; \ | ||
ldd "$extDir"/*.so \ | ||
| awk '/=>/ { print $3 }' \ | ||
| sort -u \ | ||
| xargs -r dpkg-query -S \ | ||
| cut -d: -f1 \ | ||
| sort -u \ | ||
| xargs -rt apt-mark manual; \ | ||
\ | ||
apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \ | ||
rm -rf /var/lib/apt/lists/*; \ | ||
\ | ||
! { ldd "$extDir"/*.so | grep 'not found'; }; \ | ||
# check for output like "PHP Warning: PHP Startup: Unable to load dynamic library 'foo' (tried: ...) | ||
err="$(php --version 3>&1 1>&2 2>&3)"; \ | ||
[ -z "$err" ] | ||
|
||
# set recommended PHP.ini settings | ||
# see https://secure.php.net/manual/en/opcache.installation.php | ||
RUN set -eux; \ | ||
docker-php-ext-enable opcache; \ | ||
{ \ | ||
echo 'opcache.memory_consumption=128'; \ | ||
echo 'opcache.interned_strings_buffer=8'; \ | ||
echo 'opcache.max_accelerated_files=4000'; \ | ||
echo 'opcache.revalidate_freq=2'; \ | ||
echo 'opcache.fast_shutdown=1'; \ | ||
} > /usr/local/etc/php/conf.d/opcache-recommended.ini | ||
# set recommended error logging | ||
RUN { \ | ||
# https://www.php.net/manual/en/errorfunc.constants.php | ||
echo 'error_reporting = E_ERROR | E_WARNING | E_PARSE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_RECOVERABLE_ERROR'; \ | ||
echo 'display_errors = Off'; \ | ||
echo 'display_startup_errors = Off'; \ | ||
echo 'log_errors = On'; \ | ||
echo 'error_log = /dev/stderr'; \ | ||
echo 'log_errors_max_len = 1024'; \ | ||
echo 'ignore_repeated_errors = On'; \ | ||
echo 'ignore_repeated_source = Off'; \ | ||
echo 'html_errors = Off'; \ | ||
} > /usr/local/etc/php/conf.d/error-logging.ini | ||
|
||
RUN set -eux; \ | ||
a2enmod rewrite expires; \ | ||
\ | ||
# https://httpd.apache.org/docs/2.4/mod/mod_remoteip.html | ||
a2enmod remoteip; \ | ||
{ \ | ||
echo 'RemoteIPHeader X-Forwarded-For'; \ | ||
# these IP ranges are reserved for "private" use and should thus *usually* be safe inside Docker | ||
echo 'RemoteIPTrustedProxy 10.0.0.0/8'; \ | ||
echo 'RemoteIPTrustedProxy 172.16.0.0/12'; \ | ||
echo 'RemoteIPTrustedProxy 192.168.0.0/16'; \ | ||
echo 'RemoteIPTrustedProxy 169.254.0.0/16'; \ | ||
echo 'RemoteIPTrustedProxy 127.0.0.0/8'; \ | ||
} > /etc/apache2/conf-available/remoteip.conf; \ | ||
a2enconf remoteip; \ | ||
# (replace all instances of "%h" with "%a" in LogFormat) | ||
find /etc/apache2 -type f -name '*.conf' -exec sed -ri 's/([[:space:]]*LogFormat[[:space:]]+"[^"]*)%h([^"]*")/\1%a\2/g' '{}' + | ||
|
||
VOLUME /var/www/html | ||
|
||
# Define Joomla version and expected SHA512 signature | ||
ENV JOOMLA_VERSION 4.4.1-rc1 | ||
ENV JOOMLA_SHA512 03822f4d6dd33698501a98c2c4e66c2b5e337d3087b7228ad4500eb0cbf9de2bbf8ac11679b5d2476c99d9e0aad9d60366757ae954097d6932cfecc61efa688e | ||
|
||
# Download package and extract to web volume | ||
RUN set -ex; \ | ||
curl -o joomla.tar.bz2 -SL https://github.com/joomla/joomla-cms/releases/download/4.4.1-rc1/Joomla_4.4.1-rc1-Release_Candidate-Full_Package.tar.bz2; \ | ||
echo "$JOOMLA_SHA512 *joomla.tar.bz2" | sha512sum -c -; \ | ||
mkdir /usr/src/joomla; \ | ||
tar -xf joomla.tar.bz2 -C /usr/src/joomla; \ | ||
rm joomla.tar.bz2; \ | ||
chown -R www-data:www-data /usr/src/joomla | ||
|
||
# Copy init scripts | ||
COPY docker-entrypoint.sh /entrypoint.sh | ||
COPY makedb.php /makedb.php | ||
|
||
ENTRYPOINT ["/entrypoint.sh"] | ||
CMD ["apache2-foreground"] | ||
|
||
|
Oops, something went wrong.