Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update to Joomla! 3.8.6 #4121

Merged
merged 1 commit into from
Mar 13, 2018
Merged

Update to Joomla! 3.8.6 #4121

merged 1 commit into from
Mar 13, 2018

Conversation

mbabker
Copy link
Contributor

@mbabker mbabker commented Mar 13, 2018

No description provided.

@tianon
Copy link
Member

tianon commented Mar 13, 2018

Diff:
diff --git a/_bashbrew-arches b/_bashbrew-arches
index dffd6b5..b4ea97d 100644
--- a/_bashbrew-arches
+++ b/_bashbrew-arches
@@ -1,4 +1,12 @@
-joomla:apache-php7 @ amd64
-joomla:fpm @ amd64
-joomla:fpm-php7 @ amd64
-joomla:latest @ amd64
+joomla:php5.6 @ amd64
+joomla:php5.6-fpm @ amd64
+joomla:php5.6-fpm-alpine @ amd64
+joomla:php7.0 @ amd64
+joomla:php7.0-fpm @ amd64
+joomla:php7.0-fpm-alpine @ amd64
+joomla:php7.1 @ amd64
+joomla:php7.1-fpm @ amd64
+joomla:php7.1-fpm-alpine @ amd64
+joomla:php7.2 @ amd64
+joomla:php7.2-fpm @ amd64
+joomla:php7.2-fpm-alpine @ amd64
diff --git a/_bashbrew-list b/_bashbrew-list
index 165da99..1ab22ec 100644
--- a/_bashbrew-list
+++ b/_bashbrew-list
@@ -1,20 +1,80 @@
 joomla:3
 joomla:3-apache
-joomla:3-apache-php7
 joomla:3-fpm
-joomla:3-fpm-php7
+joomla:3-fpm-alpine
+joomla:3-php5.6
+joomla:3-php5.6-apache
+joomla:3-php5.6-fpm
+joomla:3-php5.6-fpm-alpine
+joomla:3-php7.0
+joomla:3-php7.0-apache
+joomla:3-php7.0-fpm
+joomla:3-php7.0-fpm-alpine
+joomla:3-php7.1
+joomla:3-php7.1-apache
+joomla:3-php7.1-fpm
+joomla:3-php7.1-fpm-alpine
+joomla:3-php7.2
+joomla:3-php7.2-apache
+joomla:3-php7.2-fpm
+joomla:3-php7.2-fpm-alpine
 joomla:3.8
 joomla:3.8-apache
-joomla:3.8-apache-php7
 joomla:3.8-fpm
-joomla:3.8-fpm-php7
-joomla:3.8.4
-joomla:3.8.4-apache
-joomla:3.8.4-apache-php7
-joomla:3.8.4-fpm
-joomla:3.8.4-fpm-php7
+joomla:3.8-fpm-alpine
+joomla:3.8-php5.6
+joomla:3.8-php5.6-apache
+joomla:3.8-php5.6-fpm
+joomla:3.8-php5.6-fpm-alpine
+joomla:3.8-php7.0
+joomla:3.8-php7.0-apache
+joomla:3.8-php7.0-fpm
+joomla:3.8-php7.0-fpm-alpine
+joomla:3.8-php7.1
+joomla:3.8-php7.1-apache
+joomla:3.8-php7.1-fpm
+joomla:3.8-php7.1-fpm-alpine
+joomla:3.8-php7.2
+joomla:3.8-php7.2-apache
+joomla:3.8-php7.2-fpm
+joomla:3.8-php7.2-fpm-alpine
+joomla:3.8.6
+joomla:3.8.6-apache
+joomla:3.8.6-fpm
+joomla:3.8.6-fpm-alpine
+joomla:3.8.6-php5.6
+joomla:3.8.6-php5.6-apache
+joomla:3.8.6-php5.6-fpm
+joomla:3.8.6-php5.6-fpm-alpine
+joomla:3.8.6-php7.0
+joomla:3.8.6-php7.0-apache
+joomla:3.8.6-php7.0-fpm
+joomla:3.8.6-php7.0-fpm-alpine
+joomla:3.8.6-php7.1
+joomla:3.8.6-php7.1-apache
+joomla:3.8.6-php7.1-fpm
+joomla:3.8.6-php7.1-fpm-alpine
+joomla:3.8.6-php7.2
+joomla:3.8.6-php7.2-apache
+joomla:3.8.6-php7.2-fpm
+joomla:3.8.6-php7.2-fpm-alpine
 joomla:apache
-joomla:apache-php7
 joomla:fpm
-joomla:fpm-php7
+joomla:fpm-alpine
 joomla:latest
+joomla:php5.6
+joomla:php5.6-apache
+joomla:php5.6-fpm
+joomla:php5.6-fpm-alpine
+joomla:php7.0
+joomla:php7.0-apache
+joomla:php7.0-fpm
+joomla:php7.0-fpm-alpine
+joomla:php7.1
+joomla:php7.1-apache
+joomla:php7.1-fpm
+joomla:php7.1-fpm-alpine
+joomla:php7.2
+joomla:php7.2-apache
+joomla:php7.2-fpm
+joomla:php7.2-fpm-alpine
diff --git a/joomla_fpm-php7/Dockerfile b/joomla_php5.6-fpm-alpine/Dockerfile
old mode 100755
new mode 100644
similarity index 28%
copy from joomla_fpm-php7/Dockerfile
copy to joomla_php5.6-fpm-alpine/Dockerfile
index bc6b207..9c08789
--- a/joomla_fpm-php7/Dockerfile
+++ b/joomla_php5.6-fpm-alpine/Dockerfile
@@ -1,29 +1,75 @@
-FROM php:7.0-fpm
+FROM php:5.6-fpm-alpine
 LABEL maintainer="Michael Babker <michael.babker@joomla.org> (@mbabker)"
 
 # Disable remote database security requirements.
 ENV JOOMLA_INSTALLATION_DISABLE_LOCALHOST_CHECK=1
 
+# entrypoint.sh dependencies
+RUN apk add --no-cache \
+	bash
+
 # Install PHP extensions
-RUN apt-get update && apt-get install -y libpng12-dev libjpeg-dev libmcrypt-dev zip unzip && rm -rf /var/lib/apt/lists/* \
-	&& docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr \
-	&& docker-php-ext-install gd
-RUN docker-php-ext-install mysqli
-RUN docker-php-ext-install mcrypt
-RUN docker-php-ext-install zip
+RUN set -ex; \
+	\
+	apk add --no-cache --virtual .build-deps \
+		alpine-sdk \
+		autoconf \
+		bzip2-dev \
+		libjpeg-turbo-dev \
+		libmcrypt-dev \
+		libpng-dev \
+		libmemcached-dev \
+		openldap-dev \
+		pcre-dev \
+		postgresql-dev \
+	; \
+	\
+	docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr; \
+	docker-php-ext-configure ldap; \
+	docker-php-ext-install \
+		bz2 \
+		gd \
+		ldap \
+		mcrypt \
+		mysqli \
+		pdo \
+		pdo_mysql \
+		pdo_pgsql \
+		pgsql \
+		zip \
+	; \
+	pecl install \
+		APCu-4.0.11 \
+		memcached-2.2.0 \
+		redis-3.1.6 \
+	; \
+	docker-php-ext-enable \
+		apcu \
+		memcached \
+		redis \
+	; \
+	\
+	runDeps="$( \
+		scanelf --needed --nobanner --format '%n#p' --recursive /usr/local/lib/php/extensions \
+		| tr ',' '\n' \
+		| sort -u \
+		| awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \
+		)"; \
+	apk add --virtual .joomla-phpext-rundeps $runDeps; \
+	apk del .build-deps
 
 VOLUME /var/www/html
 
 # Define Joomla version and expected SHA1 signature
-ENV JOOMLA_VERSION 3.8.4
-ENV JOOMLA_SHA1 3d8a321e626cdf3823fc6bd62aee222fd12c19ec
+ENV JOOMLA_VERSION 3.8.6
+ENV JOOMLA_SHA1 769d86c00b3add41b1fa6c85f3ec823a07df88d1
 
 # Download package and extract to web volume
-RUN curl -o joomla.zip -SL https://github.com/joomla/joomla-cms/releases/download/${JOOMLA_VERSION}/Joomla_${JOOMLA_VERSION}-Stable-Full_Package.zip \
-	&& echo "$JOOMLA_SHA1 *joomla.zip" | sha1sum -c - \
+RUN curl -o joomla.tar.bz2 -SL https://github.com/joomla/joomla-cms/releases/download/${JOOMLA_VERSION}/Joomla_${JOOMLA_VERSION}-Stable-Full_Package.tar.bz2 \
+	&& echo "$JOOMLA_SHA1 *joomla.tar.bz2" | sha1sum -c - \
 	&& mkdir /usr/src/joomla \
-	&& unzip joomla.zip -d /usr/src/joomla \
-	&& rm joomla.zip \
+	&& 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 and custom .htaccess
diff --git a/joomla_apache-php7/docker-entrypoint.sh b/joomla_php5.6-fpm-alpine/docker-entrypoint.sh
similarity index 100%
copy from joomla_apache-php7/docker-entrypoint.sh
copy to joomla_php5.6-fpm-alpine/docker-entrypoint.sh
diff --git a/joomla_apache-php7/makedb.php b/joomla_php5.6-fpm-alpine/makedb.php
similarity index 100%
copy from joomla_apache-php7/makedb.php
copy to joomla_php5.6-fpm-alpine/makedb.php
diff --git a/joomla_fpm/Dockerfile b/joomla_php5.6-fpm/Dockerfile
old mode 100755
new mode 100644
similarity index 26%
copy from joomla_fpm/Dockerfile
copy to joomla_php5.6-fpm/Dockerfile
index 8babde1..daa5144
--- a/joomla_fpm/Dockerfile
+++ b/joomla_php5.6-fpm/Dockerfile
@@ -5,25 +5,75 @@ LABEL maintainer="Michael Babker <michael.babker@joomla.org> (@mbabker)"
 ENV JOOMLA_INSTALLATION_DISABLE_LOCALHOST_CHECK=1
 
 # Install PHP extensions
-RUN apt-get update && apt-get install -y libpng12-dev libjpeg-dev libmcrypt-dev zip unzip && rm -rf /var/lib/apt/lists/* \
-	&& docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr \
-	&& docker-php-ext-install gd
-RUN docker-php-ext-install mysqli
-RUN docker-php-ext-install mcrypt
-RUN docker-php-ext-install zip
+RUN set -ex; \
+	\
+	savedAptMark="$(apt-mark showmanual)"; \
+	\
+	apt-get update; \
+	apt-get install -y --no-install-recommends \
+		libbz2-dev \
+		libjpeg-dev \
+		libldap2-dev \
+		libmcrypt-dev \
+		libmemcached-dev \
+		libpng12-dev \
+		libpq-dev \
+	; \
+	\
+	docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr; \
+	debMultiarch="$(dpkg-architecture --query DEB_BUILD_MULTIARCH)"; \
+	docker-php-ext-configure ldap --with-libdir="lib/$debMultiarch"; \
+	docker-php-ext-install \
+		bz2 \
+		gd \
+		ldap \
+		mcrypt \
+		mysqli \
+		pdo \
+		pdo_mysql \
+		pdo_pgsql \
+		pgsql \
+		zip \
+	; \
+	\
+	pecl install \
+		APCu-4.0.11 \
+		memcached-2.2.0 \
+		redis-3.1.6 \
+	; \
+	\
+	docker-php-ext-enable \
+		apcu \
+		memcached \
+		redis \
+	; \
+	\
+# 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 "$(php -r 'echo ini_get("extension_dir");')"/*.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/*
 
 VOLUME /var/www/html
 
 # Define Joomla version and expected SHA1 signature
-ENV JOOMLA_VERSION 3.8.4
-ENV JOOMLA_SHA1 3d8a321e626cdf3823fc6bd62aee222fd12c19ec
+ENV JOOMLA_VERSION 3.8.6
+ENV JOOMLA_SHA1 769d86c00b3add41b1fa6c85f3ec823a07df88d1
 
 # Download package and extract to web volume
-RUN curl -o joomla.zip -SL https://github.com/joomla/joomla-cms/releases/download/${JOOMLA_VERSION}/Joomla_${JOOMLA_VERSION}-Stable-Full_Package.zip \
-	&& echo "$JOOMLA_SHA1 *joomla.zip" | sha1sum -c - \
+RUN curl -o joomla.tar.bz2 -SL https://github.com/joomla/joomla-cms/releases/download/${JOOMLA_VERSION}/Joomla_${JOOMLA_VERSION}-Stable-Full_Package.tar.bz2 \
+	&& echo "$JOOMLA_SHA1 *joomla.tar.bz2" | sha1sum -c - \
 	&& mkdir /usr/src/joomla \
-	&& unzip joomla.zip -d /usr/src/joomla \
-	&& rm joomla.zip \
+	&& 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 and custom .htaccess
diff --git a/joomla_fpm-php7/docker-entrypoint.sh b/joomla_php5.6-fpm/docker-entrypoint.sh
similarity index 100%
rename from joomla_fpm-php7/docker-entrypoint.sh
rename to joomla_php5.6-fpm/docker-entrypoint.sh
diff --git a/joomla_fpm-php7/makedb.php b/joomla_php5.6-fpm/makedb.php
similarity index 100%
rename from joomla_fpm-php7/makedb.php
rename to joomla_php5.6-fpm/makedb.php
diff --git a/joomla_latest/Dockerfile b/joomla_php5.6/Dockerfile
old mode 100755
new mode 100644
similarity index 28%
copy from joomla_latest/Dockerfile
copy to joomla_php5.6/Dockerfile
index 17290ec..d58ca8e
--- a/joomla_latest/Dockerfile
+++ b/joomla_php5.6/Dockerfile
@@ -8,25 +8,75 @@ ENV JOOMLA_INSTALLATION_DISABLE_LOCALHOST_CHECK=1
 RUN a2enmod rewrite
 
 # Install PHP extensions
-RUN apt-get update && apt-get install -y libpng12-dev libjpeg-dev libmcrypt-dev zip unzip && rm -rf /var/lib/apt/lists/* \
-	&& docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr \
-	&& docker-php-ext-install gd
-RUN docker-php-ext-install mysqli
-RUN docker-php-ext-install mcrypt
-RUN docker-php-ext-install zip
+RUN set -ex; \
+	\
+	savedAptMark="$(apt-mark showmanual)"; \
+	\
+	apt-get update; \
+	apt-get install -y --no-install-recommends \
+		libbz2-dev \
+		libjpeg-dev \
+		libldap2-dev \
+		libmcrypt-dev \
+		libmemcached-dev \
+		libpng12-dev \
+		libpq-dev \
+	; \
+	\
+	docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr; \
+	debMultiarch="$(dpkg-architecture --query DEB_BUILD_MULTIARCH)"; \
+	docker-php-ext-configure ldap --with-libdir="lib/$debMultiarch"; \
+	docker-php-ext-install \
+		bz2 \
+		gd \
+		ldap \
+		mcrypt \
+		mysqli \
+		pdo \
+		pdo_mysql \
+		pdo_pgsql \
+		pgsql \
+		zip \
+	; \
+	\
+	pecl install \
+		APCu-4.0.11 \
+		memcached-2.2.0 \
+		redis-3.1.6 \
+	; \
+	\
+	docker-php-ext-enable \
+		apcu \
+		memcached \
+		redis \
+	; \
+	\
+# 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 "$(php -r 'echo ini_get("extension_dir");')"/*.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/*
 
 VOLUME /var/www/html
 
 # Define Joomla version and expected SHA1 signature
-ENV JOOMLA_VERSION 3.8.4
-ENV JOOMLA_SHA1 3d8a321e626cdf3823fc6bd62aee222fd12c19ec
+ENV JOOMLA_VERSION 3.8.6
+ENV JOOMLA_SHA1 769d86c00b3add41b1fa6c85f3ec823a07df88d1
 
 # Download package and extract to web volume
-RUN curl -o joomla.zip -SL https://github.com/joomla/joomla-cms/releases/download/${JOOMLA_VERSION}/Joomla_${JOOMLA_VERSION}-Stable-Full_Package.zip \
-	&& echo "$JOOMLA_SHA1 *joomla.zip" | sha1sum -c - \
+RUN curl -o joomla.tar.bz2 -SL https://github.com/joomla/joomla-cms/releases/download/${JOOMLA_VERSION}/Joomla_${JOOMLA_VERSION}-Stable-Full_Package.tar.bz2 \
+	&& echo "$JOOMLA_SHA1 *joomla.tar.bz2" | sha1sum -c - \
 	&& mkdir /usr/src/joomla \
-	&& unzip joomla.zip -d /usr/src/joomla \
-	&& rm joomla.zip \
+	&& 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 and custom .htaccess
diff --git a/joomla_fpm/docker-entrypoint.sh b/joomla_php5.6/docker-entrypoint.sh
similarity index 100%
rename from joomla_fpm/docker-entrypoint.sh
rename to joomla_php5.6/docker-entrypoint.sh
diff --git a/joomla_fpm/makedb.php b/joomla_php5.6/makedb.php
similarity index 100%
rename from joomla_fpm/makedb.php
rename to joomla_php5.6/makedb.php
diff --git a/joomla_fpm/Dockerfile b/joomla_php7.0-fpm-alpine/Dockerfile
old mode 100755
new mode 100644
similarity index 28%
copy from joomla_fpm/Dockerfile
copy to joomla_php7.0-fpm-alpine/Dockerfile
index 8babde1..c6d3b09
--- a/joomla_fpm/Dockerfile
+++ b/joomla_php7.0-fpm-alpine/Dockerfile
@@ -1,29 +1,75 @@
-FROM php:5.6-fpm
+FROM php:7.0-fpm-alpine
 LABEL maintainer="Michael Babker <michael.babker@joomla.org> (@mbabker)"
 
 # Disable remote database security requirements.
 ENV JOOMLA_INSTALLATION_DISABLE_LOCALHOST_CHECK=1
 
+# entrypoint.sh dependencies
+RUN apk add --no-cache \
+	bash
+
 # Install PHP extensions
-RUN apt-get update && apt-get install -y libpng12-dev libjpeg-dev libmcrypt-dev zip unzip && rm -rf /var/lib/apt/lists/* \
-	&& docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr \
-	&& docker-php-ext-install gd
-RUN docker-php-ext-install mysqli
-RUN docker-php-ext-install mcrypt
-RUN docker-php-ext-install zip
+RUN set -ex; \
+	\
+	apk add --no-cache --virtual .build-deps \
+		alpine-sdk \
+		autoconf \
+		bzip2-dev \
+		libjpeg-turbo-dev \
+		libmcrypt-dev \
+		libpng-dev \
+		libmemcached-dev \
+		openldap-dev \
+		pcre-dev \
+		postgresql-dev \
+	; \
+	\
+	docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr; \
+	docker-php-ext-configure ldap; \
+	docker-php-ext-install \
+		bz2 \
+		gd \
+		ldap \
+		mcrypt \
+		mysqli \
+		pdo \
+		pdo_mysql \
+		pdo_pgsql \
+		pgsql \
+		zip \
+	; \
+	pecl install \
+		APCu-5.1.10 \
+		memcached-3.0.4 \
+		redis-3.1.6 \
+	; \
+	docker-php-ext-enable \
+		apcu \
+		memcached \
+		redis \
+	; \
+	\
+	runDeps="$( \
+		scanelf --needed --nobanner --format '%n#p' --recursive /usr/local/lib/php/extensions \
+		| tr ',' '\n' \
+		| sort -u \
+		| awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \
+		)"; \
+	apk add --virtual .joomla-phpext-rundeps $runDeps; \
+	apk del .build-deps
 
 VOLUME /var/www/html
 
 # Define Joomla version and expected SHA1 signature
-ENV JOOMLA_VERSION 3.8.4
-ENV JOOMLA_SHA1 3d8a321e626cdf3823fc6bd62aee222fd12c19ec
+ENV JOOMLA_VERSION 3.8.6
+ENV JOOMLA_SHA1 769d86c00b3add41b1fa6c85f3ec823a07df88d1
 
 # Download package and extract to web volume
-RUN curl -o joomla.zip -SL https://github.com/joomla/joomla-cms/releases/download/${JOOMLA_VERSION}/Joomla_${JOOMLA_VERSION}-Stable-Full_Package.zip \
-	&& echo "$JOOMLA_SHA1 *joomla.zip" | sha1sum -c - \
+RUN curl -o joomla.tar.bz2 -SL https://github.com/joomla/joomla-cms/releases/download/${JOOMLA_VERSION}/Joomla_${JOOMLA_VERSION}-Stable-Full_Package.tar.bz2 \
+	&& echo "$JOOMLA_SHA1 *joomla.tar.bz2" | sha1sum -c - \
 	&& mkdir /usr/src/joomla \
-	&& unzip joomla.zip -d /usr/src/joomla \
-	&& rm joomla.zip \
+	&& 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 and custom .htaccess
diff --git a/joomla_latest/docker-entrypoint.sh b/joomla_php7.0-fpm-alpine/docker-entrypoint.sh
similarity index 100%
rename from joomla_latest/docker-entrypoint.sh
rename to joomla_php7.0-fpm-alpine/docker-entrypoint.sh
diff --git a/joomla_latest/makedb.php b/joomla_php7.0-fpm-alpine/makedb.php
similarity index 100%
rename from joomla_latest/makedb.php
rename to joomla_php7.0-fpm-alpine/makedb.php
diff --git a/joomla_fpm-php7/Dockerfile b/joomla_php7.0-fpm/Dockerfile
old mode 100755
new mode 100644
similarity index 26%
rename from joomla_fpm-php7/Dockerfile
rename to joomla_php7.0-fpm/Dockerfile
index bc6b207..c5e0d81
--- a/joomla_fpm-php7/Dockerfile
+++ b/joomla_php7.0-fpm/Dockerfile
@@ -5,25 +5,75 @@ LABEL maintainer="Michael Babker <michael.babker@joomla.org> (@mbabker)"
 ENV JOOMLA_INSTALLATION_DISABLE_LOCALHOST_CHECK=1
 
 # Install PHP extensions
-RUN apt-get update && apt-get install -y libpng12-dev libjpeg-dev libmcrypt-dev zip unzip && rm -rf /var/lib/apt/lists/* \
-	&& docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr \
-	&& docker-php-ext-install gd
-RUN docker-php-ext-install mysqli
-RUN docker-php-ext-install mcrypt
-RUN docker-php-ext-install zip
+RUN set -ex; \
+	\
+	savedAptMark="$(apt-mark showmanual)"; \
+	\
+	apt-get update; \
+	apt-get install -y --no-install-recommends \
+		libbz2-dev \
+		libjpeg-dev \
+		libldap2-dev \
+		libmcrypt-dev \
+		libmemcached-dev \
+		libpng12-dev \
+		libpq-dev \
+	; \
+	\
+	docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr; \
+	debMultiarch="$(dpkg-architecture --query DEB_BUILD_MULTIARCH)"; \
+	docker-php-ext-configure ldap --with-libdir="lib/$debMultiarch"; \
+	docker-php-ext-install \
+		bz2 \
+		gd \
+		ldap \
+		mcrypt \
+		mysqli \
+		pdo \
+		pdo_mysql \
+		pdo_pgsql \
+		pgsql \
+		zip \
+	; \
+	\
+	pecl install \
+		APCu-5.1.10 \
+		memcached-3.0.4 \
+		redis-3.1.6 \
+	; \
+	\
+	docker-php-ext-enable \
+		apcu \
+		memcached \
+		redis \
+	; \
+	\
+# 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 "$(php -r 'echo ini_get("extension_dir");')"/*.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/*
 
 VOLUME /var/www/html
 
 # Define Joomla version and expected SHA1 signature
-ENV JOOMLA_VERSION 3.8.4
-ENV JOOMLA_SHA1 3d8a321e626cdf3823fc6bd62aee222fd12c19ec
+ENV JOOMLA_VERSION 3.8.6
+ENV JOOMLA_SHA1 769d86c00b3add41b1fa6c85f3ec823a07df88d1
 
 # Download package and extract to web volume
-RUN curl -o joomla.zip -SL https://github.com/joomla/joomla-cms/releases/download/${JOOMLA_VERSION}/Joomla_${JOOMLA_VERSION}-Stable-Full_Package.zip \
-	&& echo "$JOOMLA_SHA1 *joomla.zip" | sha1sum -c - \
+RUN curl -o joomla.tar.bz2 -SL https://github.com/joomla/joomla-cms/releases/download/${JOOMLA_VERSION}/Joomla_${JOOMLA_VERSION}-Stable-Full_Package.tar.bz2 \
+	&& echo "$JOOMLA_SHA1 *joomla.tar.bz2" | sha1sum -c - \
 	&& mkdir /usr/src/joomla \
-	&& unzip joomla.zip -d /usr/src/joomla \
-	&& rm joomla.zip \
+	&& 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 and custom .htaccess
diff --git a/joomla_apache-php7/docker-entrypoint.sh b/joomla_php7.0-fpm/docker-entrypoint.sh
similarity index 100%
copy from joomla_apache-php7/docker-entrypoint.sh
copy to joomla_php7.0-fpm/docker-entrypoint.sh
diff --git a/joomla_apache-php7/makedb.php b/joomla_php7.0-fpm/makedb.php
similarity index 100%
copy from joomla_apache-php7/makedb.php
copy to joomla_php7.0-fpm/makedb.php
diff --git a/joomla_apache-php7/Dockerfile b/joomla_php7.0/Dockerfile
old mode 100755
new mode 100644
similarity index 28%
rename from joomla_apache-php7/Dockerfile
rename to joomla_php7.0/Dockerfile
index 8690bee..d08b866
--- a/joomla_apache-php7/Dockerfile
+++ b/joomla_php7.0/Dockerfile
@@ -8,25 +8,75 @@ ENV JOOMLA_INSTALLATION_DISABLE_LOCALHOST_CHECK=1
 RUN a2enmod rewrite
 
 # Install PHP extensions
-RUN apt-get update && apt-get install -y libpng12-dev libjpeg-dev libmcrypt-dev zip unzip && rm -rf /var/lib/apt/lists/* \
-	&& docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr \
-	&& docker-php-ext-install gd
-RUN docker-php-ext-install mysqli
-RUN docker-php-ext-install mcrypt
-RUN docker-php-ext-install zip
+RUN set -ex; \
+	\
+	savedAptMark="$(apt-mark showmanual)"; \
+	\
+	apt-get update; \
+	apt-get install -y --no-install-recommends \
+		libbz2-dev \
+		libjpeg-dev \
+		libldap2-dev \
+		libmcrypt-dev \
+		libmemcached-dev \
+		libpng12-dev \
+		libpq-dev \
+	; \
+	\
+	docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr; \
+	debMultiarch="$(dpkg-architecture --query DEB_BUILD_MULTIARCH)"; \
+	docker-php-ext-configure ldap --with-libdir="lib/$debMultiarch"; \
+	docker-php-ext-install \
+		bz2 \
+		gd \
+		ldap \
+		mcrypt \
+		mysqli \
+		pdo \
+		pdo_mysql \
+		pdo_pgsql \
+		pgsql \
+		zip \
+	; \
+	\
+	pecl install \
+		APCu-5.1.10 \
+		memcached-3.0.4 \
+		redis-3.1.6 \
+	; \
+	\
+	docker-php-ext-enable \
+		apcu \
+		memcached \
+		redis \
+	; \
+	\
+# 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 "$(php -r 'echo ini_get("extension_dir");')"/*.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/*
 
 VOLUME /var/www/html
 
 # Define Joomla version and expected SHA1 signature
-ENV JOOMLA_VERSION 3.8.4
-ENV JOOMLA_SHA1 3d8a321e626cdf3823fc6bd62aee222fd12c19ec
+ENV JOOMLA_VERSION 3.8.6
+ENV JOOMLA_SHA1 769d86c00b3add41b1fa6c85f3ec823a07df88d1
 
 # Download package and extract to web volume
-RUN curl -o joomla.zip -SL https://github.com/joomla/joomla-cms/releases/download/${JOOMLA_VERSION}/Joomla_${JOOMLA_VERSION}-Stable-Full_Package.zip \
-	&& echo "$JOOMLA_SHA1 *joomla.zip" | sha1sum -c - \
+RUN curl -o joomla.tar.bz2 -SL https://github.com/joomla/joomla-cms/releases/download/${JOOMLA_VERSION}/Joomla_${JOOMLA_VERSION}-Stable-Full_Package.tar.bz2 \
+	&& echo "$JOOMLA_SHA1 *joomla.tar.bz2" | sha1sum -c - \
 	&& mkdir /usr/src/joomla \
-	&& unzip joomla.zip -d /usr/src/joomla \
-	&& rm joomla.zip \
+	&& 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 and custom .htaccess
diff --git a/joomla_apache-php7/docker-entrypoint.sh b/joomla_php7.0/docker-entrypoint.sh
similarity index 100%
copy from joomla_apache-php7/docker-entrypoint.sh
copy to joomla_php7.0/docker-entrypoint.sh
diff --git a/joomla_apache-php7/makedb.php b/joomla_php7.0/makedb.php
similarity index 100%
copy from joomla_apache-php7/makedb.php
copy to joomla_php7.0/makedb.php
diff --git a/joomla_fpm/Dockerfile b/joomla_php7.1-fpm-alpine/Dockerfile
old mode 100755
new mode 100644
similarity index 28%
copy from joomla_fpm/Dockerfile
copy to joomla_php7.1-fpm-alpine/Dockerfile
index 8babde1..bd7b129
--- a/joomla_fpm/Dockerfile
+++ b/joomla_php7.1-fpm-alpine/Dockerfile
@@ -1,29 +1,75 @@
-FROM php:5.6-fpm
+FROM php:7.1-fpm-alpine
 LABEL maintainer="Michael Babker <michael.babker@joomla.org> (@mbabker)"
 
 # Disable remote database security requirements.
 ENV JOOMLA_INSTALLATION_DISABLE_LOCALHOST_CHECK=1
 
+# entrypoint.sh dependencies
+RUN apk add --no-cache \
+	bash
+
 # Install PHP extensions
-RUN apt-get update && apt-get install -y libpng12-dev libjpeg-dev libmcrypt-dev zip unzip && rm -rf /var/lib/apt/lists/* \
-	&& docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr \
-	&& docker-php-ext-install gd
-RUN docker-php-ext-install mysqli
-RUN docker-php-ext-install mcrypt
-RUN docker-php-ext-install zip
+RUN set -ex; \
+	\
+	apk add --no-cache --virtual .build-deps \
+		alpine-sdk \
+		autoconf \
+		bzip2-dev \
+		libjpeg-turbo-dev \
+		libmcrypt-dev \
+		libpng-dev \
+		libmemcached-dev \
+		openldap-dev \
+		pcre-dev \
+		postgresql-dev \
+	; \
+	\
+	docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr; \
+	docker-php-ext-configure ldap; \
+	docker-php-ext-install \
+		bz2 \
+		gd \
+		ldap \
+		mcrypt \
+		mysqli \
+		pdo \
+		pdo_mysql \
+		pdo_pgsql \
+		pgsql \
+		zip \
+	; \
+	pecl install \
+		APCu-5.1.10 \
+		memcached-3.0.4 \
+		redis-3.1.6 \
+	; \
+	docker-php-ext-enable \
+		apcu \
+		memcached \
+		redis \
+	; \
+	\
+	runDeps="$( \
+		scanelf --needed --nobanner --format '%n#p' --recursive /usr/local/lib/php/extensions \
+		| tr ',' '\n' \
+		| sort -u \
+		| awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \
+		)"; \
+	apk add --virtual .joomla-phpext-rundeps $runDeps; \
+	apk del .build-deps
 
 VOLUME /var/www/html
 
 # Define Joomla version and expected SHA1 signature
-ENV JOOMLA_VERSION 3.8.4
-ENV JOOMLA_SHA1 3d8a321e626cdf3823fc6bd62aee222fd12c19ec
+ENV JOOMLA_VERSION 3.8.6
+ENV JOOMLA_SHA1 769d86c00b3add41b1fa6c85f3ec823a07df88d1
 
 # Download package and extract to web volume
-RUN curl -o joomla.zip -SL https://github.com/joomla/joomla-cms/releases/download/${JOOMLA_VERSION}/Joomla_${JOOMLA_VERSION}-Stable-Full_Package.zip \
-	&& echo "$JOOMLA_SHA1 *joomla.zip" | sha1sum -c - \
+RUN curl -o joomla.tar.bz2 -SL https://github.com/joomla/joomla-cms/releases/download/${JOOMLA_VERSION}/Joomla_${JOOMLA_VERSION}-Stable-Full_Package.tar.bz2 \
+	&& echo "$JOOMLA_SHA1 *joomla.tar.bz2" | sha1sum -c - \
 	&& mkdir /usr/src/joomla \
-	&& unzip joomla.zip -d /usr/src/joomla \
-	&& rm joomla.zip \
+	&& 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 and custom .htaccess
diff --git a/joomla_apache-php7/docker-entrypoint.sh b/joomla_php7.1-fpm-alpine/docker-entrypoint.sh
similarity index 100%
copy from joomla_apache-php7/docker-entrypoint.sh
copy to joomla_php7.1-fpm-alpine/docker-entrypoint.sh
diff --git a/joomla_apache-php7/makedb.php b/joomla_php7.1-fpm-alpine/makedb.php
similarity index 100%
copy from joomla_apache-php7/makedb.php
copy to joomla_php7.1-fpm-alpine/makedb.php
diff --git a/joomla_fpm/Dockerfile b/joomla_php7.1-fpm/Dockerfile
old mode 100755
new mode 100644
similarity index 25%
copy from joomla_fpm/Dockerfile
copy to joomla_php7.1-fpm/Dockerfile
index 8babde1..cf53363
--- a/joomla_fpm/Dockerfile
+++ b/joomla_php7.1-fpm/Dockerfile
@@ -1,29 +1,79 @@
-FROM php:5.6-fpm
+FROM php:7.1-fpm
 LABEL maintainer="Michael Babker <michael.babker@joomla.org> (@mbabker)"
 
 # Disable remote database security requirements.
 ENV JOOMLA_INSTALLATION_DISABLE_LOCALHOST_CHECK=1
 
 # Install PHP extensions
-RUN apt-get update && apt-get install -y libpng12-dev libjpeg-dev libmcrypt-dev zip unzip && rm -rf /var/lib/apt/lists/* \
-	&& docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr \
-	&& docker-php-ext-install gd
-RUN docker-php-ext-install mysqli
-RUN docker-php-ext-install mcrypt
-RUN docker-php-ext-install zip
+RUN set -ex; \
+	\
+	savedAptMark="$(apt-mark showmanual)"; \
+	\
+	apt-get update; \
+	apt-get install -y --no-install-recommends \
+		libbz2-dev \
+		libjpeg-dev \
+		libldap2-dev \
+		libmcrypt-dev \
+		libmemcached-dev \
+		libpng12-dev \
+		libpq-dev \
+	; \
+	\
+	docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr; \
+	debMultiarch="$(dpkg-architecture --query DEB_BUILD_MULTIARCH)"; \
+	docker-php-ext-configure ldap --with-libdir="lib/$debMultiarch"; \
+	docker-php-ext-install \
+		bz2 \
+		gd \
+		ldap \
+		mcrypt \
+		mysqli \
+		pdo \
+		pdo_mysql \
+		pdo_pgsql \
+		pgsql \
+		zip \
+	; \
+	\
+	pecl install \
+		APCu-5.1.10 \
+		memcached-3.0.4 \
+		redis-3.1.6 \
+	; \
+	\
+	docker-php-ext-enable \
+		apcu \
+		memcached \
+		redis \
+	; \
+	\
+# 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 "$(php -r 'echo ini_get("extension_dir");')"/*.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/*
 
 VOLUME /var/www/html
 
 # Define Joomla version and expected SHA1 signature
-ENV JOOMLA_VERSION 3.8.4
-ENV JOOMLA_SHA1 3d8a321e626cdf3823fc6bd62aee222fd12c19ec
+ENV JOOMLA_VERSION 3.8.6
+ENV JOOMLA_SHA1 769d86c00b3add41b1fa6c85f3ec823a07df88d1
 
 # Download package and extract to web volume
-RUN curl -o joomla.zip -SL https://github.com/joomla/joomla-cms/releases/download/${JOOMLA_VERSION}/Joomla_${JOOMLA_VERSION}-Stable-Full_Package.zip \
-	&& echo "$JOOMLA_SHA1 *joomla.zip" | sha1sum -c - \
+RUN curl -o joomla.tar.bz2 -SL https://github.com/joomla/joomla-cms/releases/download/${JOOMLA_VERSION}/Joomla_${JOOMLA_VERSION}-Stable-Full_Package.tar.bz2 \
+	&& echo "$JOOMLA_SHA1 *joomla.tar.bz2" | sha1sum -c - \
 	&& mkdir /usr/src/joomla \
-	&& unzip joomla.zip -d /usr/src/joomla \
-	&& rm joomla.zip \
+	&& 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 and custom .htaccess
diff --git a/joomla_apache-php7/docker-entrypoint.sh b/joomla_php7.1-fpm/docker-entrypoint.sh
similarity index 100%
copy from joomla_apache-php7/docker-entrypoint.sh
copy to joomla_php7.1-fpm/docker-entrypoint.sh
diff --git a/joomla_apache-php7/makedb.php b/joomla_php7.1-fpm/makedb.php
similarity index 100%
copy from joomla_apache-php7/makedb.php
copy to joomla_php7.1-fpm/makedb.php
diff --git a/joomla_latest/Dockerfile b/joomla_php7.1/Dockerfile
old mode 100755
new mode 100644
similarity index 27%
copy from joomla_latest/Dockerfile
copy to joomla_php7.1/Dockerfile
index 17290ec..aea751b
--- a/joomla_latest/Dockerfile
+++ b/joomla_php7.1/Dockerfile
@@ -1,4 +1,4 @@
-FROM php:5.6-apache
+FROM php:7.1-apache
 LABEL maintainer="Michael Babker <michael.babker@joomla.org> (@mbabker)"
 
 # Disable remote database security requirements.
@@ -8,25 +8,75 @@ ENV JOOMLA_INSTALLATION_DISABLE_LOCALHOST_CHECK=1
 RUN a2enmod rewrite
 
 # Install PHP extensions
-RUN apt-get update && apt-get install -y libpng12-dev libjpeg-dev libmcrypt-dev zip unzip && rm -rf /var/lib/apt/lists/* \
-	&& docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr \
-	&& docker-php-ext-install gd
-RUN docker-php-ext-install mysqli
-RUN docker-php-ext-install mcrypt
-RUN docker-php-ext-install zip
+RUN set -ex; \
+	\
+	savedAptMark="$(apt-mark showmanual)"; \
+	\
+	apt-get update; \
+	apt-get install -y --no-install-recommends \
+		libbz2-dev \
+		libjpeg-dev \
+		libldap2-dev \
+		libmcrypt-dev \
+		libmemcached-dev \
+		libpng12-dev \
+		libpq-dev \
+	; \
+	\
+	docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr; \
+	debMultiarch="$(dpkg-architecture --query DEB_BUILD_MULTIARCH)"; \
+	docker-php-ext-configure ldap --with-libdir="lib/$debMultiarch"; \
+	docker-php-ext-install \
+		bz2 \
+		gd \
+		ldap \
+		mcrypt \
+		mysqli \
+		pdo \
+		pdo_mysql \
+		pdo_pgsql \
+		pgsql \
+		zip \
+	; \
+	\
+	pecl install \
+		APCu-5.1.10 \
+		memcached-3.0.4 \
+		redis-3.1.6 \
+	; \
+	\
+	docker-php-ext-enable \
+		apcu \
+		memcached \
+		redis \
+	; \
+	\
+# 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 "$(php -r 'echo ini_get("extension_dir");')"/*.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/*
 
 VOLUME /var/www/html
 
 # Define Joomla version and expected SHA1 signature
-ENV JOOMLA_VERSION 3.8.4
-ENV JOOMLA_SHA1 3d8a321e626cdf3823fc6bd62aee222fd12c19ec
+ENV JOOMLA_VERSION 3.8.6
+ENV JOOMLA_SHA1 769d86c00b3add41b1fa6c85f3ec823a07df88d1
 
 # Download package and extract to web volume
-RUN curl -o joomla.zip -SL https://github.com/joomla/joomla-cms/releases/download/${JOOMLA_VERSION}/Joomla_${JOOMLA_VERSION}-Stable-Full_Package.zip \
-	&& echo "$JOOMLA_SHA1 *joomla.zip" | sha1sum -c - \
+RUN curl -o joomla.tar.bz2 -SL https://github.com/joomla/joomla-cms/releases/download/${JOOMLA_VERSION}/Joomla_${JOOMLA_VERSION}-Stable-Full_Package.tar.bz2 \
+	&& echo "$JOOMLA_SHA1 *joomla.tar.bz2" | sha1sum -c - \
 	&& mkdir /usr/src/joomla \
-	&& unzip joomla.zip -d /usr/src/joomla \
-	&& rm joomla.zip \
+	&& 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 and custom .htaccess
diff --git a/joomla_apache-php7/docker-entrypoint.sh b/joomla_php7.1/docker-entrypoint.sh
similarity index 100%
copy from joomla_apache-php7/docker-entrypoint.sh
copy to joomla_php7.1/docker-entrypoint.sh
diff --git a/joomla_apache-php7/makedb.php b/joomla_php7.1/makedb.php
similarity index 100%
copy from joomla_apache-php7/makedb.php
copy to joomla_php7.1/makedb.php
diff --git a/joomla_fpm/Dockerfile b/joomla_php7.2-fpm-alpine/Dockerfile
old mode 100755
new mode 100644
similarity index 29%
copy from joomla_fpm/Dockerfile
copy to joomla_php7.2-fpm-alpine/Dockerfile
index 8babde1..df70895
--- a/joomla_fpm/Dockerfile
+++ b/joomla_php7.2-fpm-alpine/Dockerfile
@@ -1,29 +1,73 @@
-FROM php:5.6-fpm
+FROM php:7.2-fpm-alpine
 LABEL maintainer="Michael Babker <michael.babker@joomla.org> (@mbabker)"
 
 # Disable remote database security requirements.
 ENV JOOMLA_INSTALLATION_DISABLE_LOCALHOST_CHECK=1
 
+# entrypoint.sh dependencies
+RUN apk add --no-cache \
+	bash
+
 # Install PHP extensions
-RUN apt-get update && apt-get install -y libpng12-dev libjpeg-dev libmcrypt-dev zip unzip && rm -rf /var/lib/apt/lists/* \
-	&& docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr \
-	&& docker-php-ext-install gd
-RUN docker-php-ext-install mysqli
-RUN docker-php-ext-install mcrypt
-RUN docker-php-ext-install zip
+RUN set -ex; \
+	\
+	apk add --no-cache --virtual .build-deps \
+		alpine-sdk \
+		autoconf \
+		bzip2-dev \
+		libjpeg-turbo-dev \
+		libpng-dev \
+		libmemcached-dev \
+		openldap-dev \
+		pcre-dev \
+		postgresql-dev \
+	; \
+	\
+	docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr; \
+	docker-php-ext-configure ldap; \
+	docker-php-ext-install \
+		bz2 \
+		gd \
+		ldap \
+		mysqli \
+		pdo \
+		pdo_mysql \
+		pdo_pgsql \
+		pgsql \
+		zip \
+	; \
+	pecl install \
+		APCu-5.1.10 \
+		memcached-3.0.4 \
+		redis-3.1.6 \
+	; \
+	docker-php-ext-enable \
+		apcu \
+		memcached \
+		redis \
+	; \
+	\
+	runDeps="$( \
+		scanelf --needed --nobanner --format '%n#p' --recursive /usr/local/lib/php/extensions \
+		| tr ',' '\n' \
+		| sort -u \
+		| awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \
+		)"; \
+	apk add --virtual .joomla-phpext-rundeps $runDeps; \
+	apk del .build-deps
 
 VOLUME /var/www/html
 
 # Define Joomla version and expected SHA1 signature
-ENV JOOMLA_VERSION 3.8.4
-ENV JOOMLA_SHA1 3d8a321e626cdf3823fc6bd62aee222fd12c19ec
+ENV JOOMLA_VERSION 3.8.6
+ENV JOOMLA_SHA1 769d86c00b3add41b1fa6c85f3ec823a07df88d1
 
 # Download package and extract to web volume
-RUN curl -o joomla.zip -SL https://github.com/joomla/joomla-cms/releases/download/${JOOMLA_VERSION}/Joomla_${JOOMLA_VERSION}-Stable-Full_Package.zip \
-	&& echo "$JOOMLA_SHA1 *joomla.zip" | sha1sum -c - \
+RUN curl -o joomla.tar.bz2 -SL https://github.com/joomla/joomla-cms/releases/download/${JOOMLA_VERSION}/Joomla_${JOOMLA_VERSION}-Stable-Full_Package.tar.bz2 \
+	&& echo "$JOOMLA_SHA1 *joomla.tar.bz2" | sha1sum -c - \
 	&& mkdir /usr/src/joomla \
-	&& unzip joomla.zip -d /usr/src/joomla \
-	&& rm joomla.zip \
+	&& 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 and custom .htaccess
diff --git a/joomla_apache-php7/docker-entrypoint.sh b/joomla_php7.2-fpm-alpine/docker-entrypoint.sh
similarity index 100%
copy from joomla_apache-php7/docker-entrypoint.sh
copy to joomla_php7.2-fpm-alpine/docker-entrypoint.sh
diff --git a/joomla_apache-php7/makedb.php b/joomla_php7.2-fpm-alpine/makedb.php
similarity index 100%
copy from joomla_apache-php7/makedb.php
copy to joomla_php7.2-fpm-alpine/makedb.php
diff --git a/joomla_fpm/Dockerfile b/joomla_php7.2-fpm/Dockerfile
old mode 100755
new mode 100644
similarity index 26%
rename from joomla_fpm/Dockerfile
rename to joomla_php7.2-fpm/Dockerfile
index 8babde1..06d88e6
--- a/joomla_fpm/Dockerfile
+++ b/joomla_php7.2-fpm/Dockerfile
@@ -1,29 +1,77 @@
-FROM php:5.6-fpm
+FROM php:7.2-fpm
 LABEL maintainer="Michael Babker <michael.babker@joomla.org> (@mbabker)"
 
 # Disable remote database security requirements.
 ENV JOOMLA_INSTALLATION_DISABLE_LOCALHOST_CHECK=1
 
 # Install PHP extensions
-RUN apt-get update && apt-get install -y libpng12-dev libjpeg-dev libmcrypt-dev zip unzip && rm -rf /var/lib/apt/lists/* \
-	&& docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr \
-	&& docker-php-ext-install gd
-RUN docker-php-ext-install mysqli
-RUN docker-php-ext-install mcrypt
-RUN docker-php-ext-install zip
+RUN set -ex; \
+	\
+	savedAptMark="$(apt-mark showmanual)"; \
+	\
+	apt-get update; \
+	apt-get install -y --no-install-recommends \
+		libbz2-dev \
+		libjpeg-dev \
+		libldap2-dev \
+		libmemcached-dev \
+		libpng-dev \
+		libpq-dev \
+	; \
+	\
+	docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr; \
+	debMultiarch="$(dpkg-architecture --query DEB_BUILD_MULTIARCH)"; \
+	docker-php-ext-configure ldap --with-libdir="lib/$debMultiarch"; \
+	docker-php-ext-install \
+		bz2 \
+		gd \
+		ldap \
+		mysqli \
+		pdo \
+		pdo_mysql \
+		pdo_pgsql \
+		pgsql \
+		zip \
+	; \
+	\
+	pecl install \
+		APCu-5.1.10 \
+		memcached-3.0.4 \
+		redis-3.1.6 \
+	; \
+	\
+	docker-php-ext-enable \
+		apcu \
+		memcached \
+		redis \
+	; \
+	\
+# 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 "$(php -r 'echo ini_get("extension_dir");')"/*.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/*
 
 VOLUME /var/www/html
 
 # Define Joomla version and expected SHA1 signature
-ENV JOOMLA_VERSION 3.8.4
-ENV JOOMLA_SHA1 3d8a321e626cdf3823fc6bd62aee222fd12c19ec
+ENV JOOMLA_VERSION 3.8.6
+ENV JOOMLA_SHA1 769d86c00b3add41b1fa6c85f3ec823a07df88d1
 
 # Download package and extract to web volume
-RUN curl -o joomla.zip -SL https://github.com/joomla/joomla-cms/releases/download/${JOOMLA_VERSION}/Joomla_${JOOMLA_VERSION}-Stable-Full_Package.zip \
-	&& echo "$JOOMLA_SHA1 *joomla.zip" | sha1sum -c - \
+RUN curl -o joomla.tar.bz2 -SL https://github.com/joomla/joomla-cms/releases/download/${JOOMLA_VERSION}/Joomla_${JOOMLA_VERSION}-Stable-Full_Package.tar.bz2 \
+	&& echo "$JOOMLA_SHA1 *joomla.tar.bz2" | sha1sum -c - \
 	&& mkdir /usr/src/joomla \
-	&& unzip joomla.zip -d /usr/src/joomla \
-	&& rm joomla.zip \
+	&& 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 and custom .htaccess
diff --git a/joomla_apache-php7/docker-entrypoint.sh b/joomla_php7.2-fpm/docker-entrypoint.sh
similarity index 100%
copy from joomla_apache-php7/docker-entrypoint.sh
copy to joomla_php7.2-fpm/docker-entrypoint.sh
diff --git a/joomla_apache-php7/makedb.php b/joomla_php7.2-fpm/makedb.php
similarity index 100%
copy from joomla_apache-php7/makedb.php
copy to joomla_php7.2-fpm/makedb.php
diff --git a/joomla_latest/Dockerfile b/joomla_php7.2/Dockerfile
old mode 100755
new mode 100644
similarity index 28%
rename from joomla_latest/Dockerfile
rename to joomla_php7.2/Dockerfile
index 17290ec..6723980
--- a/joomla_latest/Dockerfile
+++ b/joomla_php7.2/Dockerfile
@@ -1,4 +1,4 @@
-FROM php:5.6-apache
+FROM php:7.2-apache
 LABEL maintainer="Michael Babker <michael.babker@joomla.org> (@mbabker)"
 
 # Disable remote database security requirements.
@@ -8,25 +8,73 @@ ENV JOOMLA_INSTALLATION_DISABLE_LOCALHOST_CHECK=1
 RUN a2enmod rewrite
 
 # Install PHP extensions
-RUN apt-get update && apt-get install -y libpng12-dev libjpeg-dev libmcrypt-dev zip unzip && rm -rf /var/lib/apt/lists/* \
-	&& docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr \
-	&& docker-php-ext-install gd
-RUN docker-php-ext-install mysqli
-RUN docker-php-ext-install mcrypt
-RUN docker-php-ext-install zip
+RUN set -ex; \
+	\
+	savedAptMark="$(apt-mark showmanual)"; \
+	\
+	apt-get update; \
+	apt-get install -y --no-install-recommends \
+		libbz2-dev \
+		libjpeg-dev \
+		libldap2-dev \
+		libmemcached-dev \
+		libpng-dev \
+		libpq-dev \
+	; \
+	\
+	docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr; \
+	debMultiarch="$(dpkg-architecture --query DEB_BUILD_MULTIARCH)"; \
+	docker-php-ext-configure ldap --with-libdir="lib/$debMultiarch"; \
+	docker-php-ext-install \
+		bz2 \
+		gd \
+		ldap \
+		mysqli \
+		pdo \
+		pdo_mysql \
+		pdo_pgsql \
+		pgsql \
+		zip \
+	; \
+	\
+	pecl install \
+		APCu-5.1.10 \
+		memcached-3.0.4 \
+		redis-3.1.6 \
+	; \
+	\
+	docker-php-ext-enable \
+		apcu \
+		memcached \
+		redis \
+	; \
+	\
+# 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 "$(php -r 'echo ini_get("extension_dir");')"/*.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/*
 
 VOLUME /var/www/html
 
 # Define Joomla version and expected SHA1 signature
-ENV JOOMLA_VERSION 3.8.4
-ENV JOOMLA_SHA1 3d8a321e626cdf3823fc6bd62aee222fd12c19ec
+ENV JOOMLA_VERSION 3.8.6
+ENV JOOMLA_SHA1 769d86c00b3add41b1fa6c85f3ec823a07df88d1
 
 # Download package and extract to web volume
-RUN curl -o joomla.zip -SL https://github.com/joomla/joomla-cms/releases/download/${JOOMLA_VERSION}/Joomla_${JOOMLA_VERSION}-Stable-Full_Package.zip \
-	&& echo "$JOOMLA_SHA1 *joomla.zip" | sha1sum -c - \
+RUN curl -o joomla.tar.bz2 -SL https://github.com/joomla/joomla-cms/releases/download/${JOOMLA_VERSION}/Joomla_${JOOMLA_VERSION}-Stable-Full_Package.tar.bz2 \
+	&& echo "$JOOMLA_SHA1 *joomla.tar.bz2" | sha1sum -c - \
 	&& mkdir /usr/src/joomla \
-	&& unzip joomla.zip -d /usr/src/joomla \
-	&& rm joomla.zip \
+	&& 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 and custom .htaccess
diff --git a/joomla_apache-php7/docker-entrypoint.sh b/joomla_php7.2/docker-entrypoint.sh
similarity index 100%
rename from joomla_apache-php7/docker-entrypoint.sh
rename to joomla_php7.2/docker-entrypoint.sh
diff --git a/joomla_apache-php7/makedb.php b/joomla_php7.2/makedb.php
similarity index 100%
rename from joomla_apache-php7/makedb.php
rename to joomla_php7.2/makedb.php

@tianon
Copy link
Member

tianon commented Mar 13, 2018

Just a note that alpine-sdk may not be what you really want to be installing; since it is more for installing/building Alpine Linux packages (apks). You may want to explicitly list the dependencies needed for building (like gcc, g++, libc-dev, and make?). The build dependencies are deleted anyway, so this currently shouldn't be affecting the image.

@tianon
Copy link
Member

tianon commented Mar 13, 2018

LGTM

Build test of #4121; 81abdd6; amd64 (joomla):

$ bashbrew build joomla:3.8.6-php5.6-apache
Building bashbrew/cache:e87b16d63a0b1824b4aa85ddf0dceac28f8dadc9010ede3d22d0fbfbe3b50c7c (joomla:3.8.6-php5.6-apache)
Tagging joomla:3.8.6-php5.6-apache
Tagging joomla:3.8-php5.6-apache
Tagging joomla:3-php5.6-apache
Tagging joomla:php5.6-apache
Tagging joomla:3.8.6-php5.6
Tagging joomla:3.8-php5.6
Tagging joomla:3-php5.6
Tagging joomla:php5.6

$ test/run.sh joomla:3.8.6-php5.6-apache
testing joomla:3.8.6-php5.6-apache
	'utc' [1/4]...passed
	'cve-2014--shellshock' [2/4]...passed
	'no-hard-coded-passwords' [3/4]...passed
	'override-cmd' [4/4]...passed


$ bashbrew build joomla:3.8.6-php5.6-fpm
Building bashbrew/cache:ea583f3944616585977e454e0c79c4aa3a0b4cd58fc8b869c8bae6e44db6922b (joomla:3.8.6-php5.6-fpm)
Tagging joomla:3.8.6-php5.6-fpm
Tagging joomla:3.8-php5.6-fpm
Tagging joomla:3-php5.6-fpm
Tagging joomla:php5.6-fpm

$ test/run.sh joomla:3.8.6-php5.6-fpm
testing joomla:3.8.6-php5.6-fpm
	'utc' [1/4]...passed
	'cve-2014--shellshock' [2/4]...passed
	'no-hard-coded-passwords' [3/4]...passed
	'override-cmd' [4/4]...passed


$ bashbrew build joomla:3.8.6-php5.6-fpm-alpine
Building bashbrew/cache:23b93ddcbea6e13d9816613bc164f06564830bd93f7da16c7c7dc431ee604837 (joomla:3.8.6-php5.6-fpm-alpine)
Tagging joomla:3.8.6-php5.6-fpm-alpine
Tagging joomla:3.8-php5.6-fpm-alpine
Tagging joomla:3-php5.6-fpm-alpine
Tagging joomla:php5.6-fpm-alpine

$ test/run.sh joomla:3.8.6-php5.6-fpm-alpine
testing joomla:3.8.6-php5.6-fpm-alpine
	'utc' [1/4]...passed
	'cve-2014--shellshock' [2/4]...passed
	'no-hard-coded-passwords' [3/4]...passed
	'override-cmd' [4/4]...passed


$ bashbrew build joomla:3.8.6-php7.0-apache
Building bashbrew/cache:4dcef347b5943994d15423516f85ce01f5faedd69b21f73acc53d3f7fc9dc884 (joomla:3.8.6-php7.0-apache)
Tagging joomla:3.8.6-php7.0-apache
Tagging joomla:3.8-php7.0-apache
Tagging joomla:3-php7.0-apache
Tagging joomla:php7.0-apache
Tagging joomla:3.8.6-php7.0
Tagging joomla:3.8-php7.0
Tagging joomla:3-php7.0
Tagging joomla:php7.0

$ test/run.sh joomla:3.8.6-php7.0-apache
testing joomla:3.8.6-php7.0-apache
	'utc' [1/4]...passed
	'cve-2014--shellshock' [2/4]...passed
	'no-hard-coded-passwords' [3/4]...passed
	'override-cmd' [4/4]...passed


$ bashbrew build joomla:3.8.6-php7.0-fpm
Building bashbrew/cache:9bf4acef93f20c6e9b7bf8c8bc150992fe94bbb65e706cfca0a9f9357192b5cc (joomla:3.8.6-php7.0-fpm)
Tagging joomla:3.8.6-php7.0-fpm
Tagging joomla:3.8-php7.0-fpm
Tagging joomla:3-php7.0-fpm
Tagging joomla:php7.0-fpm

$ test/run.sh joomla:3.8.6-php7.0-fpm
testing joomla:3.8.6-php7.0-fpm
	'utc' [1/4]...passed
	'cve-2014--shellshock' [2/4]...passed
	'no-hard-coded-passwords' [3/4]...passed
	'override-cmd' [4/4]...passed


$ bashbrew build joomla:3.8.6-php7.0-fpm-alpine
Building bashbrew/cache:677715fe9d4d702f315edb509f177ff917cc7accc8d18f280aafe8d537739004 (joomla:3.8.6-php7.0-fpm-alpine)
Tagging joomla:3.8.6-php7.0-fpm-alpine
Tagging joomla:3.8-php7.0-fpm-alpine
Tagging joomla:3-php7.0-fpm-alpine
Tagging joomla:php7.0-fpm-alpine

$ test/run.sh joomla:3.8.6-php7.0-fpm-alpine
testing joomla:3.8.6-php7.0-fpm-alpine
	'utc' [1/4]...passed
	'cve-2014--shellshock' [2/4]...passed
	'no-hard-coded-passwords' [3/4]...passed
	'override-cmd' [4/4]...passed


$ bashbrew build joomla:3.8.6-apache
Building bashbrew/cache:faf7ede7bb08cf01f061a9fecc3d1d7d3f9c4e7c177e9231dd8c6772aa396fc6 (joomla:3.8.6-apache)
Tagging joomla:3.8.6-apache
Tagging joomla:3.8-apache
Tagging joomla:3-apache
Tagging joomla:apache
Tagging joomla:3.8.6
Tagging joomla:3.8
Tagging joomla:3
Tagging joomla:latest
Tagging joomla:3.8.6-php7.1-apache
Tagging joomla:3.8-php7.1-apache
Tagging joomla:3-php7.1-apache
Tagging joomla:php7.1-apache
Tagging joomla:3.8.6-php7.1
Tagging joomla:3.8-php7.1
Tagging joomla:3-php7.1
Tagging joomla:php7.1

$ test/run.sh joomla:3.8.6-apache
testing joomla:3.8.6-apache
	'utc' [1/4]...passed
	'cve-2014--shellshock' [2/4]...passed
	'no-hard-coded-passwords' [3/4]...passed
	'override-cmd' [4/4]...passed


$ bashbrew build joomla:3.8.6-fpm
Building bashbrew/cache:756e7250f70ca8908251423c68b4589846e4c692fc50f71c9892a65762b93bf7 (joomla:3.8.6-fpm)
Tagging joomla:3.8.6-fpm
Tagging joomla:3.8-fpm
Tagging joomla:3-fpm
Tagging joomla:fpm
Tagging joomla:3.8.6-php7.1-fpm
Tagging joomla:3.8-php7.1-fpm
Tagging joomla:3-php7.1-fpm
Tagging joomla:php7.1-fpm

$ test/run.sh joomla:3.8.6-fpm
testing joomla:3.8.6-fpm
	'utc' [1/4]...passed
	'cve-2014--shellshock' [2/4]...passed
	'no-hard-coded-passwords' [3/4]...passed
	'override-cmd' [4/4]...passed


$ bashbrew build joomla:3.8.6-fpm-alpine
Building bashbrew/cache:976aab18ab5b7396f51ded6f0a68d05d5452df3302a26fe037fd4e19b17330b7 (joomla:3.8.6-fpm-alpine)
Tagging joomla:3.8.6-fpm-alpine
Tagging joomla:3.8-fpm-alpine
Tagging joomla:3-fpm-alpine
Tagging joomla:fpm-alpine
Tagging joomla:3.8.6-php7.1-fpm-alpine
Tagging joomla:3.8-php7.1-fpm-alpine
Tagging joomla:3-php7.1-fpm-alpine
Tagging joomla:php7.1-fpm-alpine

$ test/run.sh joomla:3.8.6-fpm-alpine
testing joomla:3.8.6-fpm-alpine
	'utc' [1/4]...passed
	'cve-2014--shellshock' [2/4]...passed
	'no-hard-coded-passwords' [3/4]...passed
	'override-cmd' [4/4]...passed


$ bashbrew build joomla:3.8.6-php7.2-apache
Building bashbrew/cache:e92b5b7ca5360765e92142bc302b7cf12cc5657048440b9636a83559e2a5f6cb (joomla:3.8.6-php7.2-apache)
Tagging joomla:3.8.6-php7.2-apache
Tagging joomla:3.8-php7.2-apache
Tagging joomla:3-php7.2-apache
Tagging joomla:php7.2-apache
Tagging joomla:3.8.6-php7.2
Tagging joomla:3.8-php7.2
Tagging joomla:3-php7.2
Tagging joomla:php7.2

$ test/run.sh joomla:3.8.6-php7.2-apache
testing joomla:3.8.6-php7.2-apache
	'utc' [1/4]...passed
	'cve-2014--shellshock' [2/4]...passed
	'no-hard-coded-passwords' [3/4]...passed
	'override-cmd' [4/4]...passed


$ bashbrew build joomla:3.8.6-php7.2-fpm
Building bashbrew/cache:031cea8c27aaf5afbde4444b98727fe19211dbe2b87fe04544b97283f9f7e0f2 (joomla:3.8.6-php7.2-fpm)
Tagging joomla:3.8.6-php7.2-fpm
Tagging joomla:3.8-php7.2-fpm
Tagging joomla:3-php7.2-fpm
Tagging joomla:php7.2-fpm

$ test/run.sh joomla:3.8.6-php7.2-fpm
testing joomla:3.8.6-php7.2-fpm
	'utc' [1/4]...passed
	'cve-2014--shellshock' [2/4]...passed
	'no-hard-coded-passwords' [3/4]...passed
	'override-cmd' [4/4]...passed


$ bashbrew build joomla:3.8.6-php7.2-fpm-alpine
Building bashbrew/cache:cf8907b0752e6bbf937e66596684e4eed7a8978152a736b1bc7f8f04c361d67c (joomla:3.8.6-php7.2-fpm-alpine)
Tagging joomla:3.8.6-php7.2-fpm-alpine
Tagging joomla:3.8-php7.2-fpm-alpine
Tagging joomla:3-php7.2-fpm-alpine
Tagging joomla:php7.2-fpm-alpine

$ test/run.sh joomla:3.8.6-php7.2-fpm-alpine
testing joomla:3.8.6-php7.2-fpm-alpine
	'utc' [1/4]...passed
	'cve-2014--shellshock' [2/4]...passed
	'no-hard-coded-passwords' [3/4]...passed
	'override-cmd' [4/4]...passed

@tianon tianon merged commit 24936ff into docker-library:master Mar 13, 2018
@mbabker mbabker deleted the patch-1 branch March 15, 2018 23:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants