From d30d28d547c4d134e3b0af3177ac2881e9c06ae3 Mon Sep 17 00:00:00 2001 From: Natanael Copa Date: Thu, 7 Jan 2016 17:09:49 +0100 Subject: [PATCH 01/11] add php:7.0-alpine --- 7.0/alpine/Dockerfile | 72 +++++++++++++++++++++++++++++ 7.0/alpine/docker-php-ext-configure | 19 ++++++++ 7.0/alpine/docker-php-ext-enable | 61 ++++++++++++++++++++++++ 7.0/alpine/docker-php-ext-install | 67 +++++++++++++++++++++++++++ 4 files changed, 219 insertions(+) create mode 100644 7.0/alpine/Dockerfile create mode 100755 7.0/alpine/docker-php-ext-configure create mode 100755 7.0/alpine/docker-php-ext-enable create mode 100755 7.0/alpine/docker-php-ext-install diff --git a/7.0/alpine/Dockerfile b/7.0/alpine/Dockerfile new file mode 100644 index 00000000..bcd89879 --- /dev/null +++ b/7.0/alpine/Dockerfile @@ -0,0 +1,72 @@ +FROM alpine:3.3 + +ENV PHP_INI_DIR /usr/local/etc/php +RUN mkdir -p $PHP_INI_DIR/conf.d + +ENV PHP_VERSION 7.0.2 +ENV PHP_FILENAME php-7.0.2.tar.xz +ENV PHP_SHA256 556121271a34c442b48e3d7fa3d3bbb4413d91897abbb92aaeced4a7df5f2ab2 + + +#### +#### + +# --enable-mysqlnd is included below because it's harder to compile after the fact the extensions are (since it's a plugin for several extensions, not an extension in itself) +ENV GPG_KEYS 1A4E8B7277C42E53DBA9C7B9BCAA30EA9C0D5763 +RUN set -xe \ + && apk add --no-cache --virtual .build-deps \ + gnupg \ + curl-dev \ + autoconf \ + file \ + gcc \ + libc-dev \ + make \ + pkgconf \ + re2c \ + libxml2-dev \ + libedit-dev \ + sqlite-dev \ + openssl-dev \ + libxml2-dev \ + && for key in $GPG_KEYS; do \ + gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$key"; \ + done \ + && curl -fSL "http://php.net/get/$PHP_FILENAME/from/this/mirror" -o "$PHP_FILENAME" \ + && echo "$PHP_SHA256 *$PHP_FILENAME" | sha256sum -c - \ + && curl -fSL "http://php.net/get/$PHP_FILENAME.asc/from/this/mirror" -o "$PHP_FILENAME.asc" \ + && gpg --verify "$PHP_FILENAME.asc" \ + && mkdir -p /usr/src \ + && tar -Jxf "$PHP_FILENAME" -C /usr/src \ + && mv /usr/src/php-$PHP_VERSION /usr/src/php \ + && rm "$PHP_FILENAME"* \ + && cd /usr/src/php \ + && ./configure \ + --with-config-file-path="$PHP_INI_DIR" \ + --with-config-file-scan-dir="$PHP_INI_DIR/conf.d" \ + $PHP_EXTRA_CONFIGURE_ARGS \ + --disable-cgi \ + --enable-mysqlnd \ + --with-curl \ + --with-openssl \ + --with-libedit \ + --with-zlib \ + && make -j"$(nproc)" \ + && make install \ + && { find /usr/local/bin /usr/local/sbin -type f -executable -exec strip --strip-all '{}' + || true; } \ + && make clean \ + && runDeps="$( \ + scanelf --needed --nobanner --recursive /usr/local \ + | awk '{ gsub(/,/, "\nso:", $2); print "so:" $2 }' \ + | sort -u \ + | xargs -r apk info --installed \ + | sort -u \ + )" \ + && apk add --virtual .php-rundeps $runDeps \ + && apk del .build-deps + +COPY docker-php-ext-* /usr/local/bin/ + +#### +CMD ["php", "-a"] +#### diff --git a/7.0/alpine/docker-php-ext-configure b/7.0/alpine/docker-php-ext-configure new file mode 100755 index 00000000..39947c8f --- /dev/null +++ b/7.0/alpine/docker-php-ext-configure @@ -0,0 +1,19 @@ +#!/bin/sh +set -e + +ext="$1" +extDir="/usr/src/php/ext/$ext" +if [ -z "$ext" ] || ! [ -d "$extDir" ]; then + echo >&2 "usage: $0 ext-name [configure flags]" + echo >&2 " ie: $0 gd --with-jpeg-dir=/usr/local/something" + echo >&2 + echo >&2 'Possible values for ext-name:' + echo >&2 $(find /usr/src/php/ext -mindepth 2 -maxdepth 2 -type f -name 'config.m4' | cut -d/ -f6 | sort) + exit 1 +fi +shift + +set -x +cd "$extDir" +phpize +./configure "$@" diff --git a/7.0/alpine/docker-php-ext-enable b/7.0/alpine/docker-php-ext-enable new file mode 100755 index 00000000..9760b3d4 --- /dev/null +++ b/7.0/alpine/docker-php-ext-enable @@ -0,0 +1,61 @@ +#!/bin/sh +set -e + +cd "$(php -r 'echo ini_get("extension_dir");')" + +usage() { + echo "usage: $0 module-name [module-name ...]" + echo " ie: $0 gd mysqli" + echo " $0 pdo pdo_mysql" + echo + echo 'Possible values for module-name:' + echo $(find -maxdepth 1 -type f -name '*.so' -exec basename '{}' ';' | sort) +} + +modules="" +for module; do + if [ -z "$module" ]; then + continue + fi + if [ -f "$module.so" ] && ! [ -f "$module" ]; then + # allow ".so" to be optional + module="$module.so" + fi + if ! [ -f "$module" ]; then + echo >&2 "error: $(readlink -f "$module") does not exist" + echo >&2 + usage >&2 + exit 1 + fi + modules="$modules $module" +done + +if [ -z "$modules" ]; then + usage >&2 + exit 1 +fi + +for module in "${modules}"; do + if grep -q zend_extension_entry "$module"; then + # https://wiki.php.net/internals/extensions#loading_zend_extensions + line="zend_extension=$(readlink -f "$module")" + else + line="extension=$module" + fi + + ext="$(basename "$module")" + ext="${ext%.*}" + if php -r 'exit(extension_loaded("'"$ext"'") ? 0 : 1);'; then + # this isn't perfect, but it's better than nothing + # (for example, 'opcache.so' presents inside PHP as 'Zend OPcache', not 'opcache') + echo >&2 + echo >&2 "warning: $ext ($module) is already loaded!" + echo >&2 + continue + fi + + ini="/usr/local/etc/php/conf.d/docker-php-ext-$ext.ini" + if ! grep -q "$line" "$ini" 2>/dev/null; then + echo "$line" >> "$ini" + fi +done diff --git a/7.0/alpine/docker-php-ext-install b/7.0/alpine/docker-php-ext-install new file mode 100755 index 00000000..68309ff9 --- /dev/null +++ b/7.0/alpine/docker-php-ext-install @@ -0,0 +1,67 @@ +#!/bin/sh +set -e + +cd /usr/src/php/ext + +usage() { + echo "usage: $0 [-jN] ext-name [ext-name ...]" + echo " ie: $0 gd mysqli" + echo " $0 pdo pdo_mysql" + echo " $0 -j5 gd mbstring mysqli pdo pdo_mysql shmop" + echo + echo 'if custom ./configure arguments are necessary, see docker-php-ext-configure' + echo + echo 'Possible values for ext-name:' + echo $(find /usr/src/php/ext -mindepth 2 -maxdepth 2 -type f -name 'config.m4' | cut -d/ -f6 | sort) +} + +opts="$(getopt -o 'h?j:' --long 'help,jobs:' -- "$@" || { usage >&2 && false; })" +eval set -- "$opts" + +j=1 +while true; do + flag="$1" + shift + case "$flag" in + --help|-h|'-?') usage && exit 0 ;; + --jobs|-j) j="$1" && shift ;; + --) break ;; + *) + { + echo "error: unknown flag: $flag" + usage + } >&2 + exit 1 + ;; + esac +done + +exts= +for ext; do + if [ -z "$ext" ]; then + continue + fi + if [ ! -d "$ext" ]; then + echo >&2 "error: $(pwd -P)/$ext does not exist" + echo >&2 + usage >&2 + exit 1 + fi + exts="$exts $ext" +done + +if [ -z "$exts" ]; then + usage >&2 + exit 1 +fi + +for ext in $exts; do + ( + cd "$ext" + [ -e Makefile ] || docker-php-ext-configure "$ext" + make -j"$j" + make -j"$j" install + ls modules/*.so | cut -d/ -f2 | xargs -r docker-php-ext-enable + make -j"$j" clean + ) +done From 802686313f4307b84fd7282d3ee7017f04af8baf Mon Sep 17 00:00:00 2001 From: Natanael Copa Date: Fri, 12 Feb 2016 12:37:23 +0100 Subject: [PATCH 02/11] fix stripping of alpine image busybox `find` does not understand the arg `-exectutable`. --- 7.0/alpine/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/7.0/alpine/Dockerfile b/7.0/alpine/Dockerfile index bcd89879..2ccedb37 100644 --- a/7.0/alpine/Dockerfile +++ b/7.0/alpine/Dockerfile @@ -53,7 +53,7 @@ RUN set -xe \ --with-zlib \ && make -j"$(nproc)" \ && make install \ - && { find /usr/local/bin /usr/local/sbin -type f -executable -exec strip --strip-all '{}' + || true; } \ + && { find /usr/local/bin /usr/local/sbin -type f -perm +0111 -exec strip --strip-all '{}' + || true; } \ && make clean \ && runDeps="$( \ scanelf --needed --nobanner --recursive /usr/local \ From a2e54ec6e6a72ce029af7016f163bbc9102a70ab Mon Sep 17 00:00:00 2001 From: Natanael Copa Date: Fri, 12 Feb 2016 12:39:02 +0100 Subject: [PATCH 03/11] update alpine image to 7.0.3 --- 7.0/alpine/Dockerfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/7.0/alpine/Dockerfile b/7.0/alpine/Dockerfile index 2ccedb37..ba453fa7 100644 --- a/7.0/alpine/Dockerfile +++ b/7.0/alpine/Dockerfile @@ -3,9 +3,9 @@ FROM alpine:3.3 ENV PHP_INI_DIR /usr/local/etc/php RUN mkdir -p $PHP_INI_DIR/conf.d -ENV PHP_VERSION 7.0.2 -ENV PHP_FILENAME php-7.0.2.tar.xz -ENV PHP_SHA256 556121271a34c442b48e3d7fa3d3bbb4413d91897abbb92aaeced4a7df5f2ab2 +ENV PHP_VERSION 7.0.3 +ENV PHP_FILENAME php-7.0.3.tar.xz +ENV PHP_SHA256 3af2b62617a0e46214500fc3e7f4a421067224913070844d3665d6cc925a1cca #### From 83c1038d96da0360bf142e5bdfa1d0fc7805d775 Mon Sep 17 00:00:00 2001 From: Natanael Copa Date: Fri, 12 Feb 2016 13:41:25 +0100 Subject: [PATCH 04/11] fix parallel build for alpine --- 7.0/alpine/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/7.0/alpine/Dockerfile b/7.0/alpine/Dockerfile index ba453fa7..b58eb1dd 100644 --- a/7.0/alpine/Dockerfile +++ b/7.0/alpine/Dockerfile @@ -51,7 +51,7 @@ RUN set -xe \ --with-openssl \ --with-libedit \ --with-zlib \ - && make -j"$(nproc)" \ + && make -j"$(getconf _NPROCESSORS_ONLN)" \ && make install \ && { find /usr/local/bin /usr/local/sbin -type f -perm +0111 -exec strip --strip-all '{}' + || true; } \ && make clean \ From 0f95b376b3fc7b128d2cdaa53ff83a74805687ad Mon Sep 17 00:00:00 2001 From: Natanael Copa Date: Fri, 12 Feb 2016 14:20:56 +0100 Subject: [PATCH 05/11] add php:7.0-fpm-alpine image --- 7.0/fpm/alpine/Dockerfile | 114 ++++++++++++++++++++++++ 7.0/fpm/alpine/docker-php-ext-configure | 19 ++++ 7.0/fpm/alpine/docker-php-ext-enable | 61 +++++++++++++ 7.0/fpm/alpine/docker-php-ext-install | 67 ++++++++++++++ 4 files changed, 261 insertions(+) create mode 100644 7.0/fpm/alpine/Dockerfile create mode 100755 7.0/fpm/alpine/docker-php-ext-configure create mode 100755 7.0/fpm/alpine/docker-php-ext-enable create mode 100755 7.0/fpm/alpine/docker-php-ext-install diff --git a/7.0/fpm/alpine/Dockerfile b/7.0/fpm/alpine/Dockerfile new file mode 100644 index 00000000..69ce7918 --- /dev/null +++ b/7.0/fpm/alpine/Dockerfile @@ -0,0 +1,114 @@ +FROM alpine:3.3 + +ENV PHP_INI_DIR /usr/local/etc/php +RUN mkdir -p $PHP_INI_DIR/conf.d + +ENV PHP_VERSION 7.0.3 +ENV PHP_FILENAME php-7.0.3.tar.xz +ENV PHP_SHA256 3af2b62617a0e46214500fc3e7f4a421067224913070844d3665d6cc925a1cca + + +#### +ENV PHP_EXTRA_CONFIGURE_ARGS --enable-fpm --with-fpm-user=www-data --with-fpm-group=www-data +#### + +# --enable-mysqlnd is included below because it's harder to compile after the fact the extensions are (since it's a plugin for several extensions, not an extension in itself) +ENV GPG_KEYS 1A4E8B7277C42E53DBA9C7B9BCAA30EA9C0D5763 +RUN addgroup -g 82 -S www-data \ + && adduser -u 82 -D -S -G www-data www-data +RUN set -xe \ + && apk add --no-cache --virtual .build-deps \ + gnupg \ + curl-dev \ + autoconf \ + file \ + gcc \ + libc-dev \ + make \ + pkgconf \ + re2c \ + libxml2-dev \ + libedit-dev \ + sqlite-dev \ + openssl-dev \ + libxml2-dev \ + && for key in $GPG_KEYS; do \ + gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$key"; \ + done \ + && curl -fSL "http://php.net/get/$PHP_FILENAME/from/this/mirror" -o "$PHP_FILENAME" \ + && echo "$PHP_SHA256 *$PHP_FILENAME" | sha256sum -c - \ + && curl -fSL "http://php.net/get/$PHP_FILENAME.asc/from/this/mirror" -o "$PHP_FILENAME.asc" \ + && gpg --verify "$PHP_FILENAME.asc" \ + && mkdir -p /usr/src \ + && tar -Jxf "$PHP_FILENAME" -C /usr/src \ + && mv /usr/src/php-$PHP_VERSION /usr/src/php \ + && rm "$PHP_FILENAME"* \ + && cd /usr/src/php \ + && ./configure \ + --with-config-file-path="$PHP_INI_DIR" \ + --with-config-file-scan-dir="$PHP_INI_DIR/conf.d" \ + $PHP_EXTRA_CONFIGURE_ARGS \ + --disable-cgi \ + --enable-mysqlnd \ + --with-curl \ + --with-openssl \ + --with-libedit \ + --with-zlib \ + && make -j"$(getconf _NPROCESSORS_ONLN)" \ + && make install \ + && { find /usr/local/bin /usr/local/sbin -type f -perm +0111 -exec strip --strip-all '{}' + || true; } \ + && make clean \ + && runDeps="$( \ + scanelf --needed --nobanner --recursive /usr/local \ + | awk '{ gsub(/,/, "\nso:", $2); print "so:" $2 }' \ + | sort -u \ + | xargs -r apk info --installed \ + | sort -u \ + )" \ + && apk add --virtual .php-rundeps $runDeps \ + && apk del .build-deps + +COPY docker-php-ext-* /usr/local/bin/ + +#### +WORKDIR /var/www/html + +RUN set -ex \ + && cd /usr/local/etc \ + && if [ -d php-fpm.d ]; then \ + # for some reason, upstream's php-fpm.conf.default has "include=NONE/etc/php-fpm.d/*.conf" + sed 's!=NONE/!=!g' php-fpm.conf.default | tee php-fpm.conf > /dev/null; \ + cp php-fpm.d/www.conf.default php-fpm.d/www.conf; \ + else \ + # PHP 5.x don't use "include=" by default, so we'll create our own simple config that mimics PHP 7+ for consistency + mkdir php-fpm.d; \ + cp php-fpm.conf.default php-fpm.d/www.conf; \ + { \ + echo '[global]'; \ + echo 'include=etc/php-fpm.d/*.conf'; \ + } | tee php-fpm.conf; \ + fi \ + && { \ + echo '[global]'; \ + echo 'error_log = /proc/self/fd/2'; \ + echo; \ + echo '[www]'; \ + echo '; if we send this to /proc/self/fd/1, it never appears'; \ + echo 'access.log = /proc/self/fd/2'; \ + echo; \ + echo 'clear_env = no'; \ + echo; \ + echo '; Ensure worker stdout and stderr are sent to the main error log.'; \ + echo 'catch_workers_output = yes'; \ + } | tee php-fpm.d/docker.conf \ + && { \ + echo '[global]'; \ + echo 'daemonize = no'; \ + echo; \ + echo '[www]'; \ + echo 'listen = [::]:9000'; \ + } | tee php-fpm.d/zz-docker.conf + +EXPOSE 9000 +CMD ["php-fpm"] +#### diff --git a/7.0/fpm/alpine/docker-php-ext-configure b/7.0/fpm/alpine/docker-php-ext-configure new file mode 100755 index 00000000..39947c8f --- /dev/null +++ b/7.0/fpm/alpine/docker-php-ext-configure @@ -0,0 +1,19 @@ +#!/bin/sh +set -e + +ext="$1" +extDir="/usr/src/php/ext/$ext" +if [ -z "$ext" ] || ! [ -d "$extDir" ]; then + echo >&2 "usage: $0 ext-name [configure flags]" + echo >&2 " ie: $0 gd --with-jpeg-dir=/usr/local/something" + echo >&2 + echo >&2 'Possible values for ext-name:' + echo >&2 $(find /usr/src/php/ext -mindepth 2 -maxdepth 2 -type f -name 'config.m4' | cut -d/ -f6 | sort) + exit 1 +fi +shift + +set -x +cd "$extDir" +phpize +./configure "$@" diff --git a/7.0/fpm/alpine/docker-php-ext-enable b/7.0/fpm/alpine/docker-php-ext-enable new file mode 100755 index 00000000..9760b3d4 --- /dev/null +++ b/7.0/fpm/alpine/docker-php-ext-enable @@ -0,0 +1,61 @@ +#!/bin/sh +set -e + +cd "$(php -r 'echo ini_get("extension_dir");')" + +usage() { + echo "usage: $0 module-name [module-name ...]" + echo " ie: $0 gd mysqli" + echo " $0 pdo pdo_mysql" + echo + echo 'Possible values for module-name:' + echo $(find -maxdepth 1 -type f -name '*.so' -exec basename '{}' ';' | sort) +} + +modules="" +for module; do + if [ -z "$module" ]; then + continue + fi + if [ -f "$module.so" ] && ! [ -f "$module" ]; then + # allow ".so" to be optional + module="$module.so" + fi + if ! [ -f "$module" ]; then + echo >&2 "error: $(readlink -f "$module") does not exist" + echo >&2 + usage >&2 + exit 1 + fi + modules="$modules $module" +done + +if [ -z "$modules" ]; then + usage >&2 + exit 1 +fi + +for module in "${modules}"; do + if grep -q zend_extension_entry "$module"; then + # https://wiki.php.net/internals/extensions#loading_zend_extensions + line="zend_extension=$(readlink -f "$module")" + else + line="extension=$module" + fi + + ext="$(basename "$module")" + ext="${ext%.*}" + if php -r 'exit(extension_loaded("'"$ext"'") ? 0 : 1);'; then + # this isn't perfect, but it's better than nothing + # (for example, 'opcache.so' presents inside PHP as 'Zend OPcache', not 'opcache') + echo >&2 + echo >&2 "warning: $ext ($module) is already loaded!" + echo >&2 + continue + fi + + ini="/usr/local/etc/php/conf.d/docker-php-ext-$ext.ini" + if ! grep -q "$line" "$ini" 2>/dev/null; then + echo "$line" >> "$ini" + fi +done diff --git a/7.0/fpm/alpine/docker-php-ext-install b/7.0/fpm/alpine/docker-php-ext-install new file mode 100755 index 00000000..68309ff9 --- /dev/null +++ b/7.0/fpm/alpine/docker-php-ext-install @@ -0,0 +1,67 @@ +#!/bin/sh +set -e + +cd /usr/src/php/ext + +usage() { + echo "usage: $0 [-jN] ext-name [ext-name ...]" + echo " ie: $0 gd mysqli" + echo " $0 pdo pdo_mysql" + echo " $0 -j5 gd mbstring mysqli pdo pdo_mysql shmop" + echo + echo 'if custom ./configure arguments are necessary, see docker-php-ext-configure' + echo + echo 'Possible values for ext-name:' + echo $(find /usr/src/php/ext -mindepth 2 -maxdepth 2 -type f -name 'config.m4' | cut -d/ -f6 | sort) +} + +opts="$(getopt -o 'h?j:' --long 'help,jobs:' -- "$@" || { usage >&2 && false; })" +eval set -- "$opts" + +j=1 +while true; do + flag="$1" + shift + case "$flag" in + --help|-h|'-?') usage && exit 0 ;; + --jobs|-j) j="$1" && shift ;; + --) break ;; + *) + { + echo "error: unknown flag: $flag" + usage + } >&2 + exit 1 + ;; + esac +done + +exts= +for ext; do + if [ -z "$ext" ]; then + continue + fi + if [ ! -d "$ext" ]; then + echo >&2 "error: $(pwd -P)/$ext does not exist" + echo >&2 + usage >&2 + exit 1 + fi + exts="$exts $ext" +done + +if [ -z "$exts" ]; then + usage >&2 + exit 1 +fi + +for ext in $exts; do + ( + cd "$ext" + [ -e Makefile ] || docker-php-ext-configure "$ext" + make -j"$j" + make -j"$j" install + ls modules/*.so | cut -d/ -f2 | xargs -r docker-php-ext-enable + make -j"$j" clean + ) +done From 29b8ea733f3b49f3ee4c19ca85c8f534aa03bacb Mon Sep 17 00:00:00 2001 From: Natanael Copa Date: Fri, 12 Feb 2016 16:10:35 +0100 Subject: [PATCH 06/11] add php:5.6-alpine --- 5.6/alpine/Dockerfile | 72 +++++++++++++++++++++++++++++ 5.6/alpine/docker-php-ext-configure | 19 ++++++++ 5.6/alpine/docker-php-ext-enable | 61 ++++++++++++++++++++++++ 5.6/alpine/docker-php-ext-install | 67 +++++++++++++++++++++++++++ 4 files changed, 219 insertions(+) create mode 100644 5.6/alpine/Dockerfile create mode 100755 5.6/alpine/docker-php-ext-configure create mode 100755 5.6/alpine/docker-php-ext-enable create mode 100755 5.6/alpine/docker-php-ext-install diff --git a/5.6/alpine/Dockerfile b/5.6/alpine/Dockerfile new file mode 100644 index 00000000..15823062 --- /dev/null +++ b/5.6/alpine/Dockerfile @@ -0,0 +1,72 @@ +FROM alpine:3.3 + +ENV PHP_INI_DIR /usr/local/etc/php +RUN mkdir -p $PHP_INI_DIR/conf.d + +ENV PHP_VERSION 5.6.18 +ENV PHP_FILENAME php-5.6.18.tar.xz +ENV PHP_SHA256 54dd9106c3469bc7028644d72ac140af00655420bbaaf4a742a64e9ed02ec1b0 + + +#### +#### + +# --enable-mysqlnd is included below because it's harder to compile after the fact the extensions are (since it's a plugin for several extensions, not an extension in itself) +ENV GPG_KEYS 0BD78B5F97500D450838F95DFE857D9A90D90EC1 6E4F6AB321FDC07F2C332E3AC2BF0BC433CFC8B3 +RUN set -xe \ + && apk add --no-cache --virtual .build-deps \ + gnupg \ + curl-dev \ + autoconf \ + file \ + gcc \ + libc-dev \ + make \ + pkgconf \ + re2c \ + libxml2-dev \ + libedit-dev \ + sqlite-dev \ + openssl-dev \ + libxml2-dev \ + && for key in $GPG_KEYS; do \ + gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$key"; \ + done \ + && curl -fSL "http://php.net/get/$PHP_FILENAME/from/this/mirror" -o "$PHP_FILENAME" \ + && echo "$PHP_SHA256 *$PHP_FILENAME" | sha256sum -c - \ + && curl -fSL "http://php.net/get/$PHP_FILENAME.asc/from/this/mirror" -o "$PHP_FILENAME.asc" \ + && gpg --verify "$PHP_FILENAME.asc" \ + && mkdir -p /usr/src \ + && tar -Jxf "$PHP_FILENAME" -C /usr/src \ + && mv /usr/src/php-$PHP_VERSION /usr/src/php \ + && rm "$PHP_FILENAME"* \ + && cd /usr/src/php \ + && ./configure \ + --with-config-file-path="$PHP_INI_DIR" \ + --with-config-file-scan-dir="$PHP_INI_DIR/conf.d" \ + $PHP_EXTRA_CONFIGURE_ARGS \ + --disable-cgi \ + --enable-mysqlnd \ + --with-curl \ + --with-openssl \ + --with-libedit \ + --with-zlib \ + && make -j"$(getconf _NPROCESSORS_ONLN)" \ + && make install \ + && { find /usr/local/bin /usr/local/sbin -type f -perm +0111 -exec strip --strip-all '{}' + || true; } \ + && make clean \ + && runDeps="$( \ + scanelf --needed --nobanner --recursive /usr/local \ + | awk '{ gsub(/,/, "\nso:", $2); print "so:" $2 }' \ + | sort -u \ + | xargs -r apk info --installed \ + | sort -u \ + )" \ + && apk add --virtual .php-rundeps $runDeps \ + && apk del .build-deps + +COPY docker-php-ext-* /usr/local/bin/ + +#### +CMD ["php", "-a"] +#### diff --git a/5.6/alpine/docker-php-ext-configure b/5.6/alpine/docker-php-ext-configure new file mode 100755 index 00000000..39947c8f --- /dev/null +++ b/5.6/alpine/docker-php-ext-configure @@ -0,0 +1,19 @@ +#!/bin/sh +set -e + +ext="$1" +extDir="/usr/src/php/ext/$ext" +if [ -z "$ext" ] || ! [ -d "$extDir" ]; then + echo >&2 "usage: $0 ext-name [configure flags]" + echo >&2 " ie: $0 gd --with-jpeg-dir=/usr/local/something" + echo >&2 + echo >&2 'Possible values for ext-name:' + echo >&2 $(find /usr/src/php/ext -mindepth 2 -maxdepth 2 -type f -name 'config.m4' | cut -d/ -f6 | sort) + exit 1 +fi +shift + +set -x +cd "$extDir" +phpize +./configure "$@" diff --git a/5.6/alpine/docker-php-ext-enable b/5.6/alpine/docker-php-ext-enable new file mode 100755 index 00000000..9760b3d4 --- /dev/null +++ b/5.6/alpine/docker-php-ext-enable @@ -0,0 +1,61 @@ +#!/bin/sh +set -e + +cd "$(php -r 'echo ini_get("extension_dir");')" + +usage() { + echo "usage: $0 module-name [module-name ...]" + echo " ie: $0 gd mysqli" + echo " $0 pdo pdo_mysql" + echo + echo 'Possible values for module-name:' + echo $(find -maxdepth 1 -type f -name '*.so' -exec basename '{}' ';' | sort) +} + +modules="" +for module; do + if [ -z "$module" ]; then + continue + fi + if [ -f "$module.so" ] && ! [ -f "$module" ]; then + # allow ".so" to be optional + module="$module.so" + fi + if ! [ -f "$module" ]; then + echo >&2 "error: $(readlink -f "$module") does not exist" + echo >&2 + usage >&2 + exit 1 + fi + modules="$modules $module" +done + +if [ -z "$modules" ]; then + usage >&2 + exit 1 +fi + +for module in "${modules}"; do + if grep -q zend_extension_entry "$module"; then + # https://wiki.php.net/internals/extensions#loading_zend_extensions + line="zend_extension=$(readlink -f "$module")" + else + line="extension=$module" + fi + + ext="$(basename "$module")" + ext="${ext%.*}" + if php -r 'exit(extension_loaded("'"$ext"'") ? 0 : 1);'; then + # this isn't perfect, but it's better than nothing + # (for example, 'opcache.so' presents inside PHP as 'Zend OPcache', not 'opcache') + echo >&2 + echo >&2 "warning: $ext ($module) is already loaded!" + echo >&2 + continue + fi + + ini="/usr/local/etc/php/conf.d/docker-php-ext-$ext.ini" + if ! grep -q "$line" "$ini" 2>/dev/null; then + echo "$line" >> "$ini" + fi +done diff --git a/5.6/alpine/docker-php-ext-install b/5.6/alpine/docker-php-ext-install new file mode 100755 index 00000000..68309ff9 --- /dev/null +++ b/5.6/alpine/docker-php-ext-install @@ -0,0 +1,67 @@ +#!/bin/sh +set -e + +cd /usr/src/php/ext + +usage() { + echo "usage: $0 [-jN] ext-name [ext-name ...]" + echo " ie: $0 gd mysqli" + echo " $0 pdo pdo_mysql" + echo " $0 -j5 gd mbstring mysqli pdo pdo_mysql shmop" + echo + echo 'if custom ./configure arguments are necessary, see docker-php-ext-configure' + echo + echo 'Possible values for ext-name:' + echo $(find /usr/src/php/ext -mindepth 2 -maxdepth 2 -type f -name 'config.m4' | cut -d/ -f6 | sort) +} + +opts="$(getopt -o 'h?j:' --long 'help,jobs:' -- "$@" || { usage >&2 && false; })" +eval set -- "$opts" + +j=1 +while true; do + flag="$1" + shift + case "$flag" in + --help|-h|'-?') usage && exit 0 ;; + --jobs|-j) j="$1" && shift ;; + --) break ;; + *) + { + echo "error: unknown flag: $flag" + usage + } >&2 + exit 1 + ;; + esac +done + +exts= +for ext; do + if [ -z "$ext" ]; then + continue + fi + if [ ! -d "$ext" ]; then + echo >&2 "error: $(pwd -P)/$ext does not exist" + echo >&2 + usage >&2 + exit 1 + fi + exts="$exts $ext" +done + +if [ -z "$exts" ]; then + usage >&2 + exit 1 +fi + +for ext in $exts; do + ( + cd "$ext" + [ -e Makefile ] || docker-php-ext-configure "$ext" + make -j"$j" + make -j"$j" install + ls modules/*.so | cut -d/ -f2 | xargs -r docker-php-ext-enable + make -j"$j" clean + ) +done From 5acbdade056bef2faa68bf827468bd69b671a9f0 Mon Sep 17 00:00:00 2001 From: Natanael Copa Date: Fri, 12 Feb 2016 16:24:20 +0100 Subject: [PATCH 07/11] add php:5.6-fpm-alpine --- 5.6/fpm/alpine/Dockerfile | 114 ++++++++++++++++++++++++ 5.6/fpm/alpine/docker-php-ext-configure | 19 ++++ 5.6/fpm/alpine/docker-php-ext-enable | 61 +++++++++++++ 5.6/fpm/alpine/docker-php-ext-install | 67 ++++++++++++++ 4 files changed, 261 insertions(+) create mode 100644 5.6/fpm/alpine/Dockerfile create mode 100755 5.6/fpm/alpine/docker-php-ext-configure create mode 100755 5.6/fpm/alpine/docker-php-ext-enable create mode 100755 5.6/fpm/alpine/docker-php-ext-install diff --git a/5.6/fpm/alpine/Dockerfile b/5.6/fpm/alpine/Dockerfile new file mode 100644 index 00000000..a91e439d --- /dev/null +++ b/5.6/fpm/alpine/Dockerfile @@ -0,0 +1,114 @@ +FROM alpine:3.3 + +ENV PHP_INI_DIR /usr/local/etc/php +RUN mkdir -p $PHP_INI_DIR/conf.d + +ENV PHP_VERSION 5.6.18 +ENV PHP_FILENAME php-5.6.18.tar.xz +ENV PHP_SHA256 54dd9106c3469bc7028644d72ac140af00655420bbaaf4a742a64e9ed02ec1b0 + + +#### +ENV PHP_EXTRA_CONFIGURE_ARGS --enable-fpm --with-fpm-user=www-data --with-fpm-group=www-data +#### + +# --enable-mysqlnd is included below because it's harder to compile after the fact the extensions are (since it's a plugin for several extensions, not an extension in itself) +ENV GPG_KEYS 0BD78B5F97500D450838F95DFE857D9A90D90EC1 6E4F6AB321FDC07F2C332E3AC2BF0BC433CFC8B3 +RUN addgroup -g 82 -S www-data \ + && adduser -u 82 -D -S -G www-data www-data +RUN set -xe \ + && apk add --no-cache --virtual .build-deps \ + gnupg \ + curl-dev \ + autoconf \ + file \ + gcc \ + libc-dev \ + make \ + pkgconf \ + re2c \ + libxml2-dev \ + libedit-dev \ + sqlite-dev \ + openssl-dev \ + libxml2-dev \ + && for key in $GPG_KEYS; do \ + gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$key"; \ + done \ + && curl -fSL "http://php.net/get/$PHP_FILENAME/from/this/mirror" -o "$PHP_FILENAME" \ + && echo "$PHP_SHA256 *$PHP_FILENAME" | sha256sum -c - \ + && curl -fSL "http://php.net/get/$PHP_FILENAME.asc/from/this/mirror" -o "$PHP_FILENAME.asc" \ + && gpg --verify "$PHP_FILENAME.asc" \ + && mkdir -p /usr/src \ + && tar -Jxf "$PHP_FILENAME" -C /usr/src \ + && mv /usr/src/php-$PHP_VERSION /usr/src/php \ + && rm "$PHP_FILENAME"* \ + && cd /usr/src/php \ + && ./configure \ + --with-config-file-path="$PHP_INI_DIR" \ + --with-config-file-scan-dir="$PHP_INI_DIR/conf.d" \ + $PHP_EXTRA_CONFIGURE_ARGS \ + --disable-cgi \ + --enable-mysqlnd \ + --with-curl \ + --with-openssl \ + --with-libedit \ + --with-zlib \ + && make -j"$(getconf _NPROCESSORS_ONLN)" \ + && make install \ + && { find /usr/local/bin /usr/local/sbin -type f -perm +0111 -exec strip --strip-all '{}' + || true; } \ + && make clean \ + && runDeps="$( \ + scanelf --needed --nobanner --recursive /usr/local \ + | awk '{ gsub(/,/, "\nso:", $2); print "so:" $2 }' \ + | sort -u \ + | xargs -r apk info --installed \ + | sort -u \ + )" \ + && apk add --virtual .php-rundeps $runDeps \ + && apk del .build-deps + +COPY docker-php-ext-* /usr/local/bin/ + +#### +WORKDIR /var/www/html + +RUN set -ex \ + && cd /usr/local/etc \ + && if [ -d php-fpm.d ]; then \ + # for some reason, upstream's php-fpm.conf.default has "include=NONE/etc/php-fpm.d/*.conf" + sed 's!=NONE/!=!g' php-fpm.conf.default | tee php-fpm.conf > /dev/null; \ + cp php-fpm.d/www.conf.default php-fpm.d/www.conf; \ + else \ + # PHP 5.x don't use "include=" by default, so we'll create our own simple config that mimics PHP 7+ for consistency + mkdir php-fpm.d; \ + cp php-fpm.conf.default php-fpm.d/www.conf; \ + { \ + echo '[global]'; \ + echo 'include=etc/php-fpm.d/*.conf'; \ + } | tee php-fpm.conf; \ + fi \ + && { \ + echo '[global]'; \ + echo 'error_log = /proc/self/fd/2'; \ + echo; \ + echo '[www]'; \ + echo '; if we send this to /proc/self/fd/1, it never appears'; \ + echo 'access.log = /proc/self/fd/2'; \ + echo; \ + echo 'clear_env = no'; \ + echo; \ + echo '; Ensure worker stdout and stderr are sent to the main error log.'; \ + echo 'catch_workers_output = yes'; \ + } | tee php-fpm.d/docker.conf \ + && { \ + echo '[global]'; \ + echo 'daemonize = no'; \ + echo; \ + echo '[www]'; \ + echo 'listen = [::]:9000'; \ + } | tee php-fpm.d/zz-docker.conf + +EXPOSE 9000 +CMD ["php-fpm"] +#### diff --git a/5.6/fpm/alpine/docker-php-ext-configure b/5.6/fpm/alpine/docker-php-ext-configure new file mode 100755 index 00000000..39947c8f --- /dev/null +++ b/5.6/fpm/alpine/docker-php-ext-configure @@ -0,0 +1,19 @@ +#!/bin/sh +set -e + +ext="$1" +extDir="/usr/src/php/ext/$ext" +if [ -z "$ext" ] || ! [ -d "$extDir" ]; then + echo >&2 "usage: $0 ext-name [configure flags]" + echo >&2 " ie: $0 gd --with-jpeg-dir=/usr/local/something" + echo >&2 + echo >&2 'Possible values for ext-name:' + echo >&2 $(find /usr/src/php/ext -mindepth 2 -maxdepth 2 -type f -name 'config.m4' | cut -d/ -f6 | sort) + exit 1 +fi +shift + +set -x +cd "$extDir" +phpize +./configure "$@" diff --git a/5.6/fpm/alpine/docker-php-ext-enable b/5.6/fpm/alpine/docker-php-ext-enable new file mode 100755 index 00000000..9760b3d4 --- /dev/null +++ b/5.6/fpm/alpine/docker-php-ext-enable @@ -0,0 +1,61 @@ +#!/bin/sh +set -e + +cd "$(php -r 'echo ini_get("extension_dir");')" + +usage() { + echo "usage: $0 module-name [module-name ...]" + echo " ie: $0 gd mysqli" + echo " $0 pdo pdo_mysql" + echo + echo 'Possible values for module-name:' + echo $(find -maxdepth 1 -type f -name '*.so' -exec basename '{}' ';' | sort) +} + +modules="" +for module; do + if [ -z "$module" ]; then + continue + fi + if [ -f "$module.so" ] && ! [ -f "$module" ]; then + # allow ".so" to be optional + module="$module.so" + fi + if ! [ -f "$module" ]; then + echo >&2 "error: $(readlink -f "$module") does not exist" + echo >&2 + usage >&2 + exit 1 + fi + modules="$modules $module" +done + +if [ -z "$modules" ]; then + usage >&2 + exit 1 +fi + +for module in "${modules}"; do + if grep -q zend_extension_entry "$module"; then + # https://wiki.php.net/internals/extensions#loading_zend_extensions + line="zend_extension=$(readlink -f "$module")" + else + line="extension=$module" + fi + + ext="$(basename "$module")" + ext="${ext%.*}" + if php -r 'exit(extension_loaded("'"$ext"'") ? 0 : 1);'; then + # this isn't perfect, but it's better than nothing + # (for example, 'opcache.so' presents inside PHP as 'Zend OPcache', not 'opcache') + echo >&2 + echo >&2 "warning: $ext ($module) is already loaded!" + echo >&2 + continue + fi + + ini="/usr/local/etc/php/conf.d/docker-php-ext-$ext.ini" + if ! grep -q "$line" "$ini" 2>/dev/null; then + echo "$line" >> "$ini" + fi +done diff --git a/5.6/fpm/alpine/docker-php-ext-install b/5.6/fpm/alpine/docker-php-ext-install new file mode 100755 index 00000000..68309ff9 --- /dev/null +++ b/5.6/fpm/alpine/docker-php-ext-install @@ -0,0 +1,67 @@ +#!/bin/sh +set -e + +cd /usr/src/php/ext + +usage() { + echo "usage: $0 [-jN] ext-name [ext-name ...]" + echo " ie: $0 gd mysqli" + echo " $0 pdo pdo_mysql" + echo " $0 -j5 gd mbstring mysqli pdo pdo_mysql shmop" + echo + echo 'if custom ./configure arguments are necessary, see docker-php-ext-configure' + echo + echo 'Possible values for ext-name:' + echo $(find /usr/src/php/ext -mindepth 2 -maxdepth 2 -type f -name 'config.m4' | cut -d/ -f6 | sort) +} + +opts="$(getopt -o 'h?j:' --long 'help,jobs:' -- "$@" || { usage >&2 && false; })" +eval set -- "$opts" + +j=1 +while true; do + flag="$1" + shift + case "$flag" in + --help|-h|'-?') usage && exit 0 ;; + --jobs|-j) j="$1" && shift ;; + --) break ;; + *) + { + echo "error: unknown flag: $flag" + usage + } >&2 + exit 1 + ;; + esac +done + +exts= +for ext; do + if [ -z "$ext" ]; then + continue + fi + if [ ! -d "$ext" ]; then + echo >&2 "error: $(pwd -P)/$ext does not exist" + echo >&2 + usage >&2 + exit 1 + fi + exts="$exts $ext" +done + +if [ -z "$exts" ]; then + usage >&2 + exit 1 +fi + +for ext in $exts; do + ( + cd "$ext" + [ -e Makefile ] || docker-php-ext-configure "$ext" + make -j"$j" + make -j"$j" install + ls modules/*.so | cut -d/ -f2 | xargs -r docker-php-ext-enable + make -j"$j" clean + ) +done From c107bad80c127cb23c7b594da9bd8627451d63f0 Mon Sep 17 00:00:00 2001 From: Natanael Copa Date: Thu, 18 Feb 2016 16:33:13 +0100 Subject: [PATCH 08/11] fix docker-php-ext-enable in alpine images --- 5.6/alpine/docker-php-ext-enable | 2 +- 5.6/fpm/alpine/docker-php-ext-enable | 2 +- 7.0/alpine/docker-php-ext-enable | 2 +- 7.0/fpm/alpine/docker-php-ext-enable | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/5.6/alpine/docker-php-ext-enable b/5.6/alpine/docker-php-ext-enable index 9760b3d4..5381d0d0 100755 --- a/5.6/alpine/docker-php-ext-enable +++ b/5.6/alpine/docker-php-ext-enable @@ -35,7 +35,7 @@ if [ -z "$modules" ]; then exit 1 fi -for module in "${modules}"; do +for module in ${modules}; do if grep -q zend_extension_entry "$module"; then # https://wiki.php.net/internals/extensions#loading_zend_extensions line="zend_extension=$(readlink -f "$module")" diff --git a/5.6/fpm/alpine/docker-php-ext-enable b/5.6/fpm/alpine/docker-php-ext-enable index 9760b3d4..5381d0d0 100755 --- a/5.6/fpm/alpine/docker-php-ext-enable +++ b/5.6/fpm/alpine/docker-php-ext-enable @@ -35,7 +35,7 @@ if [ -z "$modules" ]; then exit 1 fi -for module in "${modules}"; do +for module in ${modules}; do if grep -q zend_extension_entry "$module"; then # https://wiki.php.net/internals/extensions#loading_zend_extensions line="zend_extension=$(readlink -f "$module")" diff --git a/7.0/alpine/docker-php-ext-enable b/7.0/alpine/docker-php-ext-enable index 9760b3d4..5381d0d0 100755 --- a/7.0/alpine/docker-php-ext-enable +++ b/7.0/alpine/docker-php-ext-enable @@ -35,7 +35,7 @@ if [ -z "$modules" ]; then exit 1 fi -for module in "${modules}"; do +for module in ${modules}; do if grep -q zend_extension_entry "$module"; then # https://wiki.php.net/internals/extensions#loading_zend_extensions line="zend_extension=$(readlink -f "$module")" diff --git a/7.0/fpm/alpine/docker-php-ext-enable b/7.0/fpm/alpine/docker-php-ext-enable index 9760b3d4..5381d0d0 100755 --- a/7.0/fpm/alpine/docker-php-ext-enable +++ b/7.0/fpm/alpine/docker-php-ext-enable @@ -35,7 +35,7 @@ if [ -z "$modules" ]; then exit 1 fi -for module in "${modules}"; do +for module in ${modules}; do if grep -q zend_extension_entry "$module"; then # https://wiki.php.net/internals/extensions#loading_zend_extensions line="zend_extension=$(readlink -f "$module")" From 78ae437dd701ea21b990be41826f571b1234432a Mon Sep 17 00:00:00 2001 From: Natanael Copa Date: Thu, 3 Mar 2016 19:14:11 +0100 Subject: [PATCH 09/11] Fix gpg usage for alpine images --- 5.6/alpine/Dockerfile | 2 +- 5.6/fpm/alpine/Dockerfile | 2 +- 7.0/alpine/Dockerfile | 2 +- 7.0/fpm/alpine/Dockerfile | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/5.6/alpine/Dockerfile b/5.6/alpine/Dockerfile index 15823062..b6a4b1e5 100644 --- a/5.6/alpine/Dockerfile +++ b/5.6/alpine/Dockerfile @@ -35,7 +35,7 @@ RUN set -xe \ && curl -fSL "http://php.net/get/$PHP_FILENAME/from/this/mirror" -o "$PHP_FILENAME" \ && echo "$PHP_SHA256 *$PHP_FILENAME" | sha256sum -c - \ && curl -fSL "http://php.net/get/$PHP_FILENAME.asc/from/this/mirror" -o "$PHP_FILENAME.asc" \ - && gpg --verify "$PHP_FILENAME.asc" \ + && gpg --batch --verify "$PHP_FILENAME.asc" "$PHP_FILENAME" \ && mkdir -p /usr/src \ && tar -Jxf "$PHP_FILENAME" -C /usr/src \ && mv /usr/src/php-$PHP_VERSION /usr/src/php \ diff --git a/5.6/fpm/alpine/Dockerfile b/5.6/fpm/alpine/Dockerfile index a91e439d..8948423f 100644 --- a/5.6/fpm/alpine/Dockerfile +++ b/5.6/fpm/alpine/Dockerfile @@ -38,7 +38,7 @@ RUN set -xe \ && curl -fSL "http://php.net/get/$PHP_FILENAME/from/this/mirror" -o "$PHP_FILENAME" \ && echo "$PHP_SHA256 *$PHP_FILENAME" | sha256sum -c - \ && curl -fSL "http://php.net/get/$PHP_FILENAME.asc/from/this/mirror" -o "$PHP_FILENAME.asc" \ - && gpg --verify "$PHP_FILENAME.asc" \ + && gpg --batch --verify "$PHP_FILENAME.asc" "$PHP_FILENAME" \ && mkdir -p /usr/src \ && tar -Jxf "$PHP_FILENAME" -C /usr/src \ && mv /usr/src/php-$PHP_VERSION /usr/src/php \ diff --git a/7.0/alpine/Dockerfile b/7.0/alpine/Dockerfile index b58eb1dd..90df0875 100644 --- a/7.0/alpine/Dockerfile +++ b/7.0/alpine/Dockerfile @@ -35,7 +35,7 @@ RUN set -xe \ && curl -fSL "http://php.net/get/$PHP_FILENAME/from/this/mirror" -o "$PHP_FILENAME" \ && echo "$PHP_SHA256 *$PHP_FILENAME" | sha256sum -c - \ && curl -fSL "http://php.net/get/$PHP_FILENAME.asc/from/this/mirror" -o "$PHP_FILENAME.asc" \ - && gpg --verify "$PHP_FILENAME.asc" \ + && gpg --batch --verify "$PHP_FILENAME.asc" "$PHP_FILENAME" \ && mkdir -p /usr/src \ && tar -Jxf "$PHP_FILENAME" -C /usr/src \ && mv /usr/src/php-$PHP_VERSION /usr/src/php \ diff --git a/7.0/fpm/alpine/Dockerfile b/7.0/fpm/alpine/Dockerfile index 69ce7918..94e26f5b 100644 --- a/7.0/fpm/alpine/Dockerfile +++ b/7.0/fpm/alpine/Dockerfile @@ -38,7 +38,7 @@ RUN set -xe \ && curl -fSL "http://php.net/get/$PHP_FILENAME/from/this/mirror" -o "$PHP_FILENAME" \ && echo "$PHP_SHA256 *$PHP_FILENAME" | sha256sum -c - \ && curl -fSL "http://php.net/get/$PHP_FILENAME.asc/from/this/mirror" -o "$PHP_FILENAME.asc" \ - && gpg --verify "$PHP_FILENAME.asc" \ + && gpg --batch --verify "$PHP_FILENAME.asc" "$PHP_FILENAME" \ && mkdir -p /usr/src \ && tar -Jxf "$PHP_FILENAME" -C /usr/src \ && mv /usr/src/php-$PHP_VERSION /usr/src/php \ From b9212a0eea91ca5ad794f1a6167f0ba7fee8033a Mon Sep 17 00:00:00 2001 From: Natanael Copa Date: Thu, 3 Mar 2016 19:16:04 +0100 Subject: [PATCH 10/11] upgrade alpine images to 7.0.4 --- 7.0/alpine/Dockerfile | 7 +++---- 7.0/fpm/alpine/Dockerfile | 6 +++--- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/7.0/alpine/Dockerfile b/7.0/alpine/Dockerfile index 90df0875..0138669c 100644 --- a/7.0/alpine/Dockerfile +++ b/7.0/alpine/Dockerfile @@ -3,10 +3,9 @@ FROM alpine:3.3 ENV PHP_INI_DIR /usr/local/etc/php RUN mkdir -p $PHP_INI_DIR/conf.d -ENV PHP_VERSION 7.0.3 -ENV PHP_FILENAME php-7.0.3.tar.xz -ENV PHP_SHA256 3af2b62617a0e46214500fc3e7f4a421067224913070844d3665d6cc925a1cca - +ENV PHP_VERSION 7.0.4 +ENV PHP_FILENAME php-7.0.4.tar.xz +ENV PHP_SHA256 584e0e374e357a71b6e95175a2947d787453afc7f9ab7c55651c10491c4df532 #### #### diff --git a/7.0/fpm/alpine/Dockerfile b/7.0/fpm/alpine/Dockerfile index 94e26f5b..99f5887d 100644 --- a/7.0/fpm/alpine/Dockerfile +++ b/7.0/fpm/alpine/Dockerfile @@ -3,9 +3,9 @@ FROM alpine:3.3 ENV PHP_INI_DIR /usr/local/etc/php RUN mkdir -p $PHP_INI_DIR/conf.d -ENV PHP_VERSION 7.0.3 -ENV PHP_FILENAME php-7.0.3.tar.xz -ENV PHP_SHA256 3af2b62617a0e46214500fc3e7f4a421067224913070844d3665d6cc925a1cca +ENV PHP_VERSION 7.0.4 +ENV PHP_FILENAME php-7.0.4.tar.xz +ENV PHP_SHA256 584e0e374e357a71b6e95175a2947d787453afc7f9ab7c55651c10491c4df532 #### From 647490f42cec2c7c3224ba3ce93b3fd8d293df56 Mon Sep 17 00:00:00 2001 From: Natanael Copa Date: Mon, 14 Mar 2016 17:16:25 +0100 Subject: [PATCH 11/11] sort dependencies and remove duplicate libxml2-dev in alpine images --- 5.6/alpine/Dockerfile | 18 ++++++++---------- 5.6/fpm/alpine/Dockerfile | 11 +++++------ 7.0/alpine/Dockerfile | 11 +++++------ 7.0/fpm/alpine/Dockerfile | 11 +++++------ 4 files changed, 23 insertions(+), 28 deletions(-) diff --git a/5.6/alpine/Dockerfile b/5.6/alpine/Dockerfile index b6a4b1e5..41f23b29 100644 --- a/5.6/alpine/Dockerfile +++ b/5.6/alpine/Dockerfile @@ -3,10 +3,9 @@ FROM alpine:3.3 ENV PHP_INI_DIR /usr/local/etc/php RUN mkdir -p $PHP_INI_DIR/conf.d -ENV PHP_VERSION 5.6.18 -ENV PHP_FILENAME php-5.6.18.tar.xz -ENV PHP_SHA256 54dd9106c3469bc7028644d72ac140af00655420bbaaf4a742a64e9ed02ec1b0 - +ENV PHP_VERSION 5.6.19 +ENV PHP_FILENAME php-5.6.19.tar.xz +ENV PHP_SHA256 2a24a3f84971680ac0a4c71050067de4f76ee235aa4a041fae21bfa69975c168 #### #### @@ -15,20 +14,19 @@ ENV PHP_SHA256 54dd9106c3469bc7028644d72ac140af00655420bbaaf4a742a64e9ed02ec1b0 ENV GPG_KEYS 0BD78B5F97500D450838F95DFE857D9A90D90EC1 6E4F6AB321FDC07F2C332E3AC2BF0BC433CFC8B3 RUN set -xe \ && apk add --no-cache --virtual .build-deps \ - gnupg \ - curl-dev \ autoconf \ + curl-dev \ file \ gcc \ + gnupg \ libc-dev \ + libedit-dev \ + libxml2-dev \ make \ + openssl-dev \ pkgconf \ re2c \ - libxml2-dev \ - libedit-dev \ sqlite-dev \ - openssl-dev \ - libxml2-dev \ && for key in $GPG_KEYS; do \ gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$key"; \ done \ diff --git a/5.6/fpm/alpine/Dockerfile b/5.6/fpm/alpine/Dockerfile index 8948423f..762ba54d 100644 --- a/5.6/fpm/alpine/Dockerfile +++ b/5.6/fpm/alpine/Dockerfile @@ -18,20 +18,19 @@ RUN addgroup -g 82 -S www-data \ && adduser -u 82 -D -S -G www-data www-data RUN set -xe \ && apk add --no-cache --virtual .build-deps \ - gnupg \ - curl-dev \ autoconf \ + curl-dev \ file \ gcc \ + gnupg \ libc-dev \ + libedit-dev \ + libxml2-dev \ make \ + openssl-dev \ pkgconf \ re2c \ - libxml2-dev \ - libedit-dev \ sqlite-dev \ - openssl-dev \ - libxml2-dev \ && for key in $GPG_KEYS; do \ gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$key"; \ done \ diff --git a/7.0/alpine/Dockerfile b/7.0/alpine/Dockerfile index 0138669c..d035877e 100644 --- a/7.0/alpine/Dockerfile +++ b/7.0/alpine/Dockerfile @@ -14,20 +14,19 @@ ENV PHP_SHA256 584e0e374e357a71b6e95175a2947d787453afc7f9ab7c55651c10491c4df532 ENV GPG_KEYS 1A4E8B7277C42E53DBA9C7B9BCAA30EA9C0D5763 RUN set -xe \ && apk add --no-cache --virtual .build-deps \ - gnupg \ - curl-dev \ autoconf \ + curl-dev \ file \ gcc \ + gnupg \ libc-dev \ + libedit-dev \ + libxml2-dev \ make \ + openssl-dev \ pkgconf \ re2c \ - libxml2-dev \ - libedit-dev \ sqlite-dev \ - openssl-dev \ - libxml2-dev \ && for key in $GPG_KEYS; do \ gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$key"; \ done \ diff --git a/7.0/fpm/alpine/Dockerfile b/7.0/fpm/alpine/Dockerfile index 99f5887d..3691eace 100644 --- a/7.0/fpm/alpine/Dockerfile +++ b/7.0/fpm/alpine/Dockerfile @@ -18,20 +18,19 @@ RUN addgroup -g 82 -S www-data \ && adduser -u 82 -D -S -G www-data www-data RUN set -xe \ && apk add --no-cache --virtual .build-deps \ - gnupg \ - curl-dev \ autoconf \ + curl-dev \ file \ gcc \ + gnupg \ libc-dev \ + libedit-dev \ + libxml2-dev \ make \ + openssl-dev \ pkgconf \ re2c \ - libxml2-dev \ - libedit-dev \ sqlite-dev \ - openssl-dev \ - libxml2-dev \ && for key in $GPG_KEYS; do \ gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$key"; \ done \