Created
December 19, 2016 17:05
-
-
Save guillemcanal/46b5fd46a97610102343cdcd6561f1cc to your computer and use it in GitHub Desktop.
PHP 7.1 Optimized
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
FROM alpine:3.4 | |
ENV PHPIZE_DEPS="autoconf file g++ gcc libc-dev make pkgconf re2c" \ | |
PHP_INI_DIR="/usr/local/etc/php" \ | |
PHP_CFLAGS="-fstack-protector-strong -fpic -fpie -O2" \ | |
PHP_CPPFLAGS="$PHP_CFLAGS" \ | |
PHP_LDFLAGS="-Wl,-O1 -Wl,--hash-style=both -pie" \ | |
GPG_KEYS="A917B1ECDA84AEC2B568FED6F50ABC807BD5DCD0" \ | |
PHP_VERSION="7.1.0" \ | |
PHP_URL="https://secure.php.net/get/php-7.1.0.tar.xz/from/this/mirror" \ | |
PHP_ASC_URL="https://secure.php.net/get/php-7.1.0.tar.xz.asc/from/this/mirror" \ | |
PHP_SHA256="a810b3f29c21407c24caa88f50649320d20ba6892ae1923132598b8a0ca145b6" \ | |
PHP_MD5="cf36039303c47f493100afea522a8f53" \ | |
PHP_EXTRA_CONFIGURE_ARGS="--enable-fpm --with-fpm-user=www-data --with-fpm-group=www-data" | |
COPY docker-php-ext-* docker-php-entrypoint /usr/local/bin/ | |
COPY docker-php-source /usr/local/bin/ | |
RUN apk add --no-cache --virtual .persistent-deps \ | |
ca-certificates \ | |
curl \ | |
tar \ | |
xz \ | |
# ensure www-data user exists | |
&& set -x \ | |
&& addgroup -g 82 -S www-data \ | |
&& adduser -u 82 -D -S -G www-data www-data \ | |
# Create ini directory | |
&& mkdir -p $PHP_INI_DIR/conf.d \ | |
# Fetch dependencies | |
&& set -xe; \ | |
apk add --no-cache --virtual .fetch-deps \ | |
gnupg \ | |
openssl \ | |
; \ | |
mkdir -p /usr/src; \ | |
cd /usr/src; \ | |
wget -O php.tar.xz "$PHP_URL"; \ | |
if [ -n "$PHP_SHA256" ]; then \ | |
echo "$PHP_SHA256 *php.tar.xz" | sha256sum -c -; \ | |
fi; \ | |
if [ -n "$PHP_MD5" ]; then \ | |
echo "$PHP_MD5 *php.tar.xz" | md5sum -c -; \ | |
fi; \ | |
if [ -n "$PHP_ASC_URL" ]; then \ | |
wget -O php.tar.xz.asc "$PHP_ASC_URL"; \ | |
export GNUPGHOME="$(mktemp -d)"; \ | |
for key in $GPG_KEYS; do \ | |
gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$key"; \ | |
done; \ | |
gpg --batch --verify php.tar.xz.asc php.tar.xz; \ | |
rm -r "$GNUPGHOME"; \ | |
fi; \ | |
apk del .fetch-deps \ | |
# Compile PHP | |
&& set -xe \ | |
&& apk add --no-cache --virtual .build-deps \ | |
$PHPIZE_DEPS \ | |
curl-dev \ | |
libedit-dev \ | |
libxml2-dev \ | |
openssl-dev \ | |
sqlite-dev \ | |
&& export CFLAGS="$PHP_CFLAGS" \ | |
CPPFLAGS="$PHP_CPPFLAGS" \ | |
LDFLAGS="$PHP_LDFLAGS" \ | |
&& docker-php-source extract \ | |
&& cd /usr/src/php \ | |
&& ./configure \ | |
--with-config-file-path="$PHP_INI_DIR" \ | |
--with-config-file-scan-dir="$PHP_INI_DIR/conf.d" \ | |
--disable-cgi \ | |
--enable-ftp \ | |
--enable-mbstring \ | |
--enable-mysqlnd \ | |
--with-curl \ | |
--with-libedit \ | |
--with-openssl \ | |
--with-zlib \ | |
--enable-opcache \ | |
$PHP_EXTRA_CONFIGURE_ARGS \ | |
&& 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 \ | |
&& docker-php-source delete \ | |
&& 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 --no-cache --virtual .php-rundeps $runDeps \ | |
&& apk del .build-deps | |
ENTRYPOINT ["docker-php-entrypoint"] | |
CMD ["php", "-a"] | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment