From bac437242c43cd716d2273b14443d3541a7af84e Mon Sep 17 00:00:00 2001 From: J0WI Date: Mon, 1 Jan 2018 19:03:00 +0100 Subject: [PATCH 1/3] Remove the *-dev deps and only keep the necessary lib* packages --- Dockerfile-debian.template | 16 ++++++++++++---- php5.6/apache/Dockerfile | 16 ++++++++++++---- php5.6/fpm/Dockerfile | 16 ++++++++++++---- php7.0/apache/Dockerfile | 16 ++++++++++++---- php7.0/fpm/Dockerfile | 16 ++++++++++++---- php7.1/apache/Dockerfile | 16 ++++++++++++---- php7.1/fpm/Dockerfile | 16 ++++++++++++---- php7.2/apache/Dockerfile | 16 ++++++++++++---- php7.2/fpm/Dockerfile | 16 ++++++++++++---- 9 files changed, 108 insertions(+), 36 deletions(-) diff --git a/Dockerfile-debian.template b/Dockerfile-debian.template index 161b5e71a4..99409abcf7 100644 --- a/Dockerfile-debian.template +++ b/Dockerfile-debian.template @@ -4,15 +4,23 @@ FROM php:%%PHP_VERSION%%-%%VARIANT%% RUN set -ex; \ \ apt-get update; \ - apt-get install -y \ + buildDeps=" \ libjpeg-dev \ libpng-dev \ + "; \ + apt-get install -y \ + $buildDeps \ ; \ - rm -rf /var/lib/apt/lists/*; \ \ docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr; \ - docker-php-ext-install gd mysqli opcache -# TODO consider removing the *-dev deps and only keeping the necessary lib* packages + docker-php-ext-install gd mysqli opcache; \ + \ + apt-mark manual \ + libjpeg62-turbo \ + ; \ + apt-mark manual libpng12-0 || apt-mark manual libpng16-16; \ + apt-get purge -y --auto-remove $buildDeps; \ + rm -rf /var/lib/apt/lists/* # set recommended PHP.ini settings # see https://secure.php.net/manual/en/opcache.installation.php diff --git a/php5.6/apache/Dockerfile b/php5.6/apache/Dockerfile index 5abb3fd489..4aacf9d421 100644 --- a/php5.6/apache/Dockerfile +++ b/php5.6/apache/Dockerfile @@ -4,15 +4,23 @@ FROM php:5.6-apache RUN set -ex; \ \ apt-get update; \ - apt-get install -y \ + buildDeps=" \ libjpeg-dev \ libpng-dev \ + "; \ + apt-get install -y \ + $buildDeps \ ; \ - rm -rf /var/lib/apt/lists/*; \ \ docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr; \ - docker-php-ext-install gd mysqli opcache -# TODO consider removing the *-dev deps and only keeping the necessary lib* packages + docker-php-ext-install gd mysqli opcache; \ + \ + apt-mark manual \ + libjpeg62-turbo \ + ; \ + apt-mark manual libpng12-0 || apt-mark manual libpng16-16; \ + apt-get purge -y --auto-remove $buildDeps; \ + rm -rf /var/lib/apt/lists/* # set recommended PHP.ini settings # see https://secure.php.net/manual/en/opcache.installation.php diff --git a/php5.6/fpm/Dockerfile b/php5.6/fpm/Dockerfile index 0f4e89c351..20a2ee795c 100644 --- a/php5.6/fpm/Dockerfile +++ b/php5.6/fpm/Dockerfile @@ -4,15 +4,23 @@ FROM php:5.6-fpm RUN set -ex; \ \ apt-get update; \ - apt-get install -y \ + buildDeps=" \ libjpeg-dev \ libpng-dev \ + "; \ + apt-get install -y \ + $buildDeps \ ; \ - rm -rf /var/lib/apt/lists/*; \ \ docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr; \ - docker-php-ext-install gd mysqli opcache -# TODO consider removing the *-dev deps and only keeping the necessary lib* packages + docker-php-ext-install gd mysqli opcache; \ + \ + apt-mark manual \ + libjpeg62-turbo \ + ; \ + apt-mark manual libpng12-0 || apt-mark manual libpng16-16; \ + apt-get purge -y --auto-remove $buildDeps; \ + rm -rf /var/lib/apt/lists/* # set recommended PHP.ini settings # see https://secure.php.net/manual/en/opcache.installation.php diff --git a/php7.0/apache/Dockerfile b/php7.0/apache/Dockerfile index 13f3624949..64ec64ced8 100644 --- a/php7.0/apache/Dockerfile +++ b/php7.0/apache/Dockerfile @@ -4,15 +4,23 @@ FROM php:7.0-apache RUN set -ex; \ \ apt-get update; \ - apt-get install -y \ + buildDeps=" \ libjpeg-dev \ libpng-dev \ + "; \ + apt-get install -y \ + $buildDeps \ ; \ - rm -rf /var/lib/apt/lists/*; \ \ docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr; \ - docker-php-ext-install gd mysqli opcache -# TODO consider removing the *-dev deps and only keeping the necessary lib* packages + docker-php-ext-install gd mysqli opcache; \ + \ + apt-mark manual \ + libjpeg62-turbo \ + ; \ + apt-mark manual libpng12-0 || apt-mark manual libpng16-16; \ + apt-get purge -y --auto-remove $buildDeps; \ + rm -rf /var/lib/apt/lists/* # set recommended PHP.ini settings # see https://secure.php.net/manual/en/opcache.installation.php diff --git a/php7.0/fpm/Dockerfile b/php7.0/fpm/Dockerfile index 5001e76b39..45fce55785 100644 --- a/php7.0/fpm/Dockerfile +++ b/php7.0/fpm/Dockerfile @@ -4,15 +4,23 @@ FROM php:7.0-fpm RUN set -ex; \ \ apt-get update; \ - apt-get install -y \ + buildDeps=" \ libjpeg-dev \ libpng-dev \ + "; \ + apt-get install -y \ + $buildDeps \ ; \ - rm -rf /var/lib/apt/lists/*; \ \ docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr; \ - docker-php-ext-install gd mysqli opcache -# TODO consider removing the *-dev deps and only keeping the necessary lib* packages + docker-php-ext-install gd mysqli opcache; \ + \ + apt-mark manual \ + libjpeg62-turbo \ + ; \ + apt-mark manual libpng12-0 || apt-mark manual libpng16-16; \ + apt-get purge -y --auto-remove $buildDeps; \ + rm -rf /var/lib/apt/lists/* # set recommended PHP.ini settings # see https://secure.php.net/manual/en/opcache.installation.php diff --git a/php7.1/apache/Dockerfile b/php7.1/apache/Dockerfile index dc2391561d..fe8babf7f6 100644 --- a/php7.1/apache/Dockerfile +++ b/php7.1/apache/Dockerfile @@ -4,15 +4,23 @@ FROM php:7.1-apache RUN set -ex; \ \ apt-get update; \ - apt-get install -y \ + buildDeps=" \ libjpeg-dev \ libpng-dev \ + "; \ + apt-get install -y \ + $buildDeps \ ; \ - rm -rf /var/lib/apt/lists/*; \ \ docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr; \ - docker-php-ext-install gd mysqli opcache -# TODO consider removing the *-dev deps and only keeping the necessary lib* packages + docker-php-ext-install gd mysqli opcache; \ + \ + apt-mark manual \ + libjpeg62-turbo \ + ; \ + apt-mark manual libpng12-0 || apt-mark manual libpng16-16; \ + apt-get purge -y --auto-remove $buildDeps; \ + rm -rf /var/lib/apt/lists/* # set recommended PHP.ini settings # see https://secure.php.net/manual/en/opcache.installation.php diff --git a/php7.1/fpm/Dockerfile b/php7.1/fpm/Dockerfile index 74f3d84c14..98c722dd48 100644 --- a/php7.1/fpm/Dockerfile +++ b/php7.1/fpm/Dockerfile @@ -4,15 +4,23 @@ FROM php:7.1-fpm RUN set -ex; \ \ apt-get update; \ - apt-get install -y \ + buildDeps=" \ libjpeg-dev \ libpng-dev \ + "; \ + apt-get install -y \ + $buildDeps \ ; \ - rm -rf /var/lib/apt/lists/*; \ \ docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr; \ - docker-php-ext-install gd mysqli opcache -# TODO consider removing the *-dev deps and only keeping the necessary lib* packages + docker-php-ext-install gd mysqli opcache; \ + \ + apt-mark manual \ + libjpeg62-turbo \ + ; \ + apt-mark manual libpng12-0 || apt-mark manual libpng16-16; \ + apt-get purge -y --auto-remove $buildDeps; \ + rm -rf /var/lib/apt/lists/* # set recommended PHP.ini settings # see https://secure.php.net/manual/en/opcache.installation.php diff --git a/php7.2/apache/Dockerfile b/php7.2/apache/Dockerfile index 6c9b08927b..1a126d4f49 100644 --- a/php7.2/apache/Dockerfile +++ b/php7.2/apache/Dockerfile @@ -4,15 +4,23 @@ FROM php:7.2-apache RUN set -ex; \ \ apt-get update; \ - apt-get install -y \ + buildDeps=" \ libjpeg-dev \ libpng-dev \ + "; \ + apt-get install -y \ + $buildDeps \ ; \ - rm -rf /var/lib/apt/lists/*; \ \ docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr; \ - docker-php-ext-install gd mysqli opcache -# TODO consider removing the *-dev deps and only keeping the necessary lib* packages + docker-php-ext-install gd mysqli opcache; \ + \ + apt-mark manual \ + libjpeg62-turbo \ + ; \ + apt-mark manual libpng12-0 || apt-mark manual libpng16-16; \ + apt-get purge -y --auto-remove $buildDeps; \ + rm -rf /var/lib/apt/lists/* # set recommended PHP.ini settings # see https://secure.php.net/manual/en/opcache.installation.php diff --git a/php7.2/fpm/Dockerfile b/php7.2/fpm/Dockerfile index 1115254306..231498a011 100644 --- a/php7.2/fpm/Dockerfile +++ b/php7.2/fpm/Dockerfile @@ -4,15 +4,23 @@ FROM php:7.2-fpm RUN set -ex; \ \ apt-get update; \ - apt-get install -y \ + buildDeps=" \ libjpeg-dev \ libpng-dev \ + "; \ + apt-get install -y \ + $buildDeps \ ; \ - rm -rf /var/lib/apt/lists/*; \ \ docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr; \ - docker-php-ext-install gd mysqli opcache -# TODO consider removing the *-dev deps and only keeping the necessary lib* packages + docker-php-ext-install gd mysqli opcache; \ + \ + apt-mark manual \ + libjpeg62-turbo \ + ; \ + apt-mark manual libpng12-0 || apt-mark manual libpng16-16; \ + apt-get purge -y --auto-remove $buildDeps; \ + rm -rf /var/lib/apt/lists/* # set recommended PHP.ini settings # see https://secure.php.net/manual/en/opcache.installation.php From 251aeceb1878860a36577703caaebbb742775226 Mon Sep 17 00:00:00 2001 From: Joe Ferguson Date: Wed, 3 Jan 2018 10:57:50 -0800 Subject: [PATCH 2/3] Update template to remove build deps automatically --- Dockerfile-debian.template | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/Dockerfile-debian.template b/Dockerfile-debian.template index 99409abcf7..edd9dd688b 100644 --- a/Dockerfile-debian.template +++ b/Dockerfile-debian.template @@ -2,24 +2,30 @@ FROM php:%%PHP_VERSION%%-%%VARIANT%% # install the PHP extensions we need RUN set -ex; \ + \ + savedAptMark="$(apt-mark showmanual)"; \ \ apt-get update; \ - buildDeps=" \ + apt-get install -y --no-install-recommends \ libjpeg-dev \ libpng-dev \ - "; \ - apt-get install -y \ - $buildDeps \ ; \ \ docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr; \ docker-php-ext-install gd mysqli opcache; \ \ - apt-mark manual \ - libjpeg62-turbo \ - ; \ - apt-mark manual libpng12-0 || apt-mark manual libpng16-16; \ - apt-get purge -y --auto-remove $buildDeps; \ +# 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/* # set recommended PHP.ini settings From 6a085d90853b8baffadbd3f0a41d6814a2513c11 Mon Sep 17 00:00:00 2001 From: Joe Ferguson Date: Wed, 3 Jan 2018 10:59:09 -0800 Subject: [PATCH 3/3] Run update.sh for build deps auto-removal --- php5.6/apache/Dockerfile | 24 +++++++++++++++--------- php5.6/fpm/Dockerfile | 24 +++++++++++++++--------- php7.0/apache/Dockerfile | 24 +++++++++++++++--------- php7.0/fpm/Dockerfile | 24 +++++++++++++++--------- php7.1/apache/Dockerfile | 24 +++++++++++++++--------- php7.1/fpm/Dockerfile | 24 +++++++++++++++--------- php7.2/apache/Dockerfile | 24 +++++++++++++++--------- php7.2/fpm/Dockerfile | 24 +++++++++++++++--------- 8 files changed, 120 insertions(+), 72 deletions(-) diff --git a/php5.6/apache/Dockerfile b/php5.6/apache/Dockerfile index 4aacf9d421..5ff9e011c2 100644 --- a/php5.6/apache/Dockerfile +++ b/php5.6/apache/Dockerfile @@ -2,24 +2,30 @@ FROM php:5.6-apache # install the PHP extensions we need RUN set -ex; \ + \ + savedAptMark="$(apt-mark showmanual)"; \ \ apt-get update; \ - buildDeps=" \ + apt-get install -y --no-install-recommends \ libjpeg-dev \ libpng-dev \ - "; \ - apt-get install -y \ - $buildDeps \ ; \ \ docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr; \ docker-php-ext-install gd mysqli opcache; \ \ - apt-mark manual \ - libjpeg62-turbo \ - ; \ - apt-mark manual libpng12-0 || apt-mark manual libpng16-16; \ - apt-get purge -y --auto-remove $buildDeps; \ +# 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/* # set recommended PHP.ini settings diff --git a/php5.6/fpm/Dockerfile b/php5.6/fpm/Dockerfile index 20a2ee795c..182b1cc7c4 100644 --- a/php5.6/fpm/Dockerfile +++ b/php5.6/fpm/Dockerfile @@ -2,24 +2,30 @@ FROM php:5.6-fpm # install the PHP extensions we need RUN set -ex; \ + \ + savedAptMark="$(apt-mark showmanual)"; \ \ apt-get update; \ - buildDeps=" \ + apt-get install -y --no-install-recommends \ libjpeg-dev \ libpng-dev \ - "; \ - apt-get install -y \ - $buildDeps \ ; \ \ docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr; \ docker-php-ext-install gd mysqli opcache; \ \ - apt-mark manual \ - libjpeg62-turbo \ - ; \ - apt-mark manual libpng12-0 || apt-mark manual libpng16-16; \ - apt-get purge -y --auto-remove $buildDeps; \ +# 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/* # set recommended PHP.ini settings diff --git a/php7.0/apache/Dockerfile b/php7.0/apache/Dockerfile index 64ec64ced8..5dffd476ee 100644 --- a/php7.0/apache/Dockerfile +++ b/php7.0/apache/Dockerfile @@ -2,24 +2,30 @@ FROM php:7.0-apache # install the PHP extensions we need RUN set -ex; \ + \ + savedAptMark="$(apt-mark showmanual)"; \ \ apt-get update; \ - buildDeps=" \ + apt-get install -y --no-install-recommends \ libjpeg-dev \ libpng-dev \ - "; \ - apt-get install -y \ - $buildDeps \ ; \ \ docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr; \ docker-php-ext-install gd mysqli opcache; \ \ - apt-mark manual \ - libjpeg62-turbo \ - ; \ - apt-mark manual libpng12-0 || apt-mark manual libpng16-16; \ - apt-get purge -y --auto-remove $buildDeps; \ +# 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/* # set recommended PHP.ini settings diff --git a/php7.0/fpm/Dockerfile b/php7.0/fpm/Dockerfile index 45fce55785..eabe7e1369 100644 --- a/php7.0/fpm/Dockerfile +++ b/php7.0/fpm/Dockerfile @@ -2,24 +2,30 @@ FROM php:7.0-fpm # install the PHP extensions we need RUN set -ex; \ + \ + savedAptMark="$(apt-mark showmanual)"; \ \ apt-get update; \ - buildDeps=" \ + apt-get install -y --no-install-recommends \ libjpeg-dev \ libpng-dev \ - "; \ - apt-get install -y \ - $buildDeps \ ; \ \ docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr; \ docker-php-ext-install gd mysqli opcache; \ \ - apt-mark manual \ - libjpeg62-turbo \ - ; \ - apt-mark manual libpng12-0 || apt-mark manual libpng16-16; \ - apt-get purge -y --auto-remove $buildDeps; \ +# 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/* # set recommended PHP.ini settings diff --git a/php7.1/apache/Dockerfile b/php7.1/apache/Dockerfile index fe8babf7f6..3a75f2f1af 100644 --- a/php7.1/apache/Dockerfile +++ b/php7.1/apache/Dockerfile @@ -2,24 +2,30 @@ FROM php:7.1-apache # install the PHP extensions we need RUN set -ex; \ + \ + savedAptMark="$(apt-mark showmanual)"; \ \ apt-get update; \ - buildDeps=" \ + apt-get install -y --no-install-recommends \ libjpeg-dev \ libpng-dev \ - "; \ - apt-get install -y \ - $buildDeps \ ; \ \ docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr; \ docker-php-ext-install gd mysqli opcache; \ \ - apt-mark manual \ - libjpeg62-turbo \ - ; \ - apt-mark manual libpng12-0 || apt-mark manual libpng16-16; \ - apt-get purge -y --auto-remove $buildDeps; \ +# 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/* # set recommended PHP.ini settings diff --git a/php7.1/fpm/Dockerfile b/php7.1/fpm/Dockerfile index 98c722dd48..a9e2678fa1 100644 --- a/php7.1/fpm/Dockerfile +++ b/php7.1/fpm/Dockerfile @@ -2,24 +2,30 @@ FROM php:7.1-fpm # install the PHP extensions we need RUN set -ex; \ + \ + savedAptMark="$(apt-mark showmanual)"; \ \ apt-get update; \ - buildDeps=" \ + apt-get install -y --no-install-recommends \ libjpeg-dev \ libpng-dev \ - "; \ - apt-get install -y \ - $buildDeps \ ; \ \ docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr; \ docker-php-ext-install gd mysqli opcache; \ \ - apt-mark manual \ - libjpeg62-turbo \ - ; \ - apt-mark manual libpng12-0 || apt-mark manual libpng16-16; \ - apt-get purge -y --auto-remove $buildDeps; \ +# 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/* # set recommended PHP.ini settings diff --git a/php7.2/apache/Dockerfile b/php7.2/apache/Dockerfile index 1a126d4f49..904b897f48 100644 --- a/php7.2/apache/Dockerfile +++ b/php7.2/apache/Dockerfile @@ -2,24 +2,30 @@ FROM php:7.2-apache # install the PHP extensions we need RUN set -ex; \ + \ + savedAptMark="$(apt-mark showmanual)"; \ \ apt-get update; \ - buildDeps=" \ + apt-get install -y --no-install-recommends \ libjpeg-dev \ libpng-dev \ - "; \ - apt-get install -y \ - $buildDeps \ ; \ \ docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr; \ docker-php-ext-install gd mysqli opcache; \ \ - apt-mark manual \ - libjpeg62-turbo \ - ; \ - apt-mark manual libpng12-0 || apt-mark manual libpng16-16; \ - apt-get purge -y --auto-remove $buildDeps; \ +# 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/* # set recommended PHP.ini settings diff --git a/php7.2/fpm/Dockerfile b/php7.2/fpm/Dockerfile index 231498a011..89d27e020c 100644 --- a/php7.2/fpm/Dockerfile +++ b/php7.2/fpm/Dockerfile @@ -2,24 +2,30 @@ FROM php:7.2-fpm # install the PHP extensions we need RUN set -ex; \ + \ + savedAptMark="$(apt-mark showmanual)"; \ \ apt-get update; \ - buildDeps=" \ + apt-get install -y --no-install-recommends \ libjpeg-dev \ libpng-dev \ - "; \ - apt-get install -y \ - $buildDeps \ ; \ \ docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr; \ docker-php-ext-install gd mysqli opcache; \ \ - apt-mark manual \ - libjpeg62-turbo \ - ; \ - apt-mark manual libpng12-0 || apt-mark manual libpng16-16; \ - apt-get purge -y --auto-remove $buildDeps; \ +# 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/* # set recommended PHP.ini settings