FROM php:7.1.27-fpm-alpine3.8
MAINTAINER seven <82294148@qq.com>
RUN apk add freetype libpng libjpeg-turbo freetype-dev libpng-dev libjpeg-turbo-dev && \
docker-php-ext-configure gd \
--with-gd \
--with-freetype-dir=/usr/include/ \
--with-png-dir=/usr/include/ \
--with-jpeg-dir=/usr/include/ && \
NPROC=$(grep -c ^processor /proc/cpuinfo 2>/dev/null || 1) && \
docker-php-ext-install -j${NPROC} gd && \
apk del --no-cache freetype-dev libpng-dev libjpeg-turbo-dev
RUN apk add gettext-dev \
&& /usr/local/bin/docker-php-ext-install gettext
RUN apk add --update \
autoconf \
file \
g++ \
gcc \
libc-dev \
make \
pkgconf \
re2c \
zlib-dev \
libmemcached-dev && \
cd /tmp && \
wget https://github.com/php-memcached-dev/php-memcached/archive/php7.zip && \
unzip php7.zip && \
cd php-memcached-php7 && \
phpize || return 1 && \
./configure --prefix=/usr --disable-memcached-sasl --with-php-config=php-config || return 1 && \
make || return 1 && \
make INSTALL_ROOT="" install || return 1 && \
install -d "/etc/php7/conf.d" || return 1 && \
echo "extension=memcached.so" > /etc/php7/conf.d/20_memcached.ini && \
cd /tmp && rm -rf php-memcached-php7 && rm php7.zip && \
docker-php-ext-enable memcached && \
cd /tmp \
&& wget https://github.com/igbinary/igbinary/archive/2.0.4.zip \
&& unzip 2.0.4.zip && cd igbinary-2.0.4 \
&& phpize && ./configure --with-php-config=php-config \
&& make && make install \
&& echo extension=igbinary.so >> /etc/php7/conf.d/01_igbinary.ini &&\
wget https://github.com/phpredis/phpredis/archive/3.1.2.zip \
&& unzip 3.1.2.zip && cd phpredis-3.1.2 \
&& phpize && ./configure --enable-redis-igbinary --with-php-config=php-config \
&& make && make install \
&& echo extension=redis.so >> /etc/php7/conf.d/01_redis.ini && \
docker-php-ext-enable igbinary redis
上面的文件创建的镜像大小为288M, 下面做一下优化,为镜像瘦身
FROM php:7.1.27-fpm-alpine3.8
MAINTAINER seven <82294148@qq.com>
RUN apk add --no-cache freetype libpng libjpeg-turbo \
freetype-dev libpng-dev libjpeg-turbo-dev && \
docker-php-ext-configure gd \
--with-gd \
--with-freetype-dir=/usr/include/ \
--with-png-dir=/usr/include/ \
--with-jpeg-dir=/usr/include/ && \
NPROC=$(grep -c ^processor /proc/cpuinfo 2>/dev/null || 1) && \
docker-php-ext-install -j${NPROC} gd && docker-php-ext-enable gd && apk del \
freetype-dev libpng-dev libjpeg-turbo-dev && \
apk add gettext-dev \
&& /usr/local/bin/docker-php-ext-install gettext \
&& apk add --no-cache\
autoconf \
file \
g++ \
gcc \
libc-dev \
make \
pkgconf \
re2c \
zlib-dev \
libmemcached-dev && \
cd /tmp && \
wget https://github.com/php-memcached-dev/php-memcached/archive/php7.zip && \
unzip php7.zip && \
cd php-memcached-php7 && \
phpize || return 1 && \
./configure --prefix=/usr --disable-memcached-sasl --with-php-config=php-config || return 1 && \
make || return 1 && \
make INSTALL_ROOT="" install || return 1 && \
install -d "/etc/php7/conf.d" || return 1 && \
echo "extension=memcached.so" > /etc/php7/conf.d/20_memcached.ini && \
cd /tmp && rm -rf php-memcached-php7 && rm php7.zip && \
docker-php-ext-enable memcached &&\
cd /tmp \
&& wget https://github.com/igbinary/igbinary/archive/2.0.4.zip \
&& unzip 2.0.4.zip && cd igbinary-2.0.4 \
&& phpize && ./configure --with-php-config=php-config \
&& make && make install \
&& echo extension=igbinary.so >> /etc/php7/conf.d/01_igbinary.ini &&\
wget https://github.com/phpredis/phpredis/archive/3.1.2.zip \
&& unzip 3.1.2.zip && cd phpredis-3.1.2 \
&& phpize && ./configure --enable-redis-igbinary --with-php-config=php-config \
&& make && make install \
&& echo extension=redis.so >> /etc/php7/conf.d/01_redis.ini && \
docker-php-ext-enable igbinary redis && apk del autoconf \
file \
g++ \
gcc \
libc-dev \
make \
pkgconf \
re2c \
zlib-dev
用后面这个代码创建的镜像大小为99M,镜像大小减小了近200M;
主要减小镜像的方式:
删除不必要的依赖程序,如g++, gcc, libpng-dev 之类的
减少层的数量,尽量把更多的操作合并到一个层
需要注意的是: