版本介绍
官方仓库地址 :https://hub.docker.com
搜索php 里面一般包含了cli、 fpm、 zts 几个版本的 当前使用的fpm版本 假设要升级到7.2.4版本 这里也拉取的 7.2.4进行测试
cli 是命令行版本
fpm 是配合nginx 使用 的版本
zts 是线程安全版本
Dockfile文件
FROM php:7.2.4-fpm
MAINTAINER xiexinyang <983600849@qq.com>
ENV PHPREDIS_VERSION 4.0.0
ENV MSGPACK_VERSION 2.0.3
ENV MEMCACHED_VERSION 3.1.3
ENV MONGODB_VERSION 1.5.3
ENV XHPROF_VERSION 2.0.5
ENV SWOOLE_VERSION 4.0.3
ENV HIREDIS_VERSION 0.13.3
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo 'Asia/Shanghai' > /etc/timezone
RUN apt-get update \
&& apt-get install -y \
curl \
wget \
git \
zip \
libz-dev \
libssl-dev \
libnghttp2-dev \
libpcre3-dev \
libmemcached-dev \
zlib1g-dev \
&& apt-get clean \
&& apt-get autoremove
RUN curl -sS https://getcomposer.org/installer | php \
&& mv composer.phar /usr/local/bin/composer \
&& composer self-update --clean-backups
RUN docker-php-ext-install mysqli
RUN docker-php-ext-install pdo_mysql
RUN docker-php-ext-install bcmath
RUN wget http://pecl.php.net/get/redis-${PHPREDIS_VERSION}.tgz -O /tmp/redis.tgz \
&& pecl install /tmp/redis.tgz \
&& rm -rf /tmp/redis.tgz \
&& docker-php-ext-enable redis
RUN wget http://pecl.php.net/get/msgpack-${MSGPACK_VERSION}.tgz -O /tmp/msgpack.tgz \
&& pecl install /tmp/msgpack.tgz \
&& rm -rf /tmp/msgpack.tgz \
&& docker-php-ext-enable msgpack
RUN wget http://pecl.php.net/get/memcached-${MEMCACHED_VERSION}.tgz -O /tmp/memcached.tgz \
&& pecl install /tmp/memcached.tgz \
&& rm -rf /tmp/memcached.tgz \
&& docker-php-ext-enable memcached
RUN wget http://pecl.php.net/get/mongodb-${MONGODB_VERSION}.tgz -O /tmp/mongodb.tgz \
&& pecl install /tmp/mongodb.tgz \
&& rm -rf /tmp/mongodb.tgz \
&& docker-php-ext-enable mongodb
RUN wget https://github.com/longxinH/xhprof/archive/v${XHPROF_VERSION}.tar.gz -O /tmp/xhprof.tar.gz \
&& mkdir -p /tmp/xhprof \
&& tar -xf /tmp/xhprof.tar.gz -C /tmp/xhprof --strip-components=1 \
&& rm /tmp/xhprof.tar.gz \
&& ( \
cd /tmp/xhprof/extension \
&& phpize \
&& ./configure \
&& make -j$(nproc) \
&& make install \
) \
&& rm -r /tmp/xhprof \
&& docker-php-ext-enable xhprof
RUN wget https://github.com/redis/hiredis/archive/v${HIREDIS_VERSION}.tar.gz -O /tmp/hiredis.tar.gz \
&& mkdir -p /tmp/hiredis \
&& tar -xf /tmp/hiredis.tar.gz -C /tmp/hiredis --strip-components=1 \
&& rm /tmp/hiredis.tar.gz \
&& ( \
cd /tmp/hiredis \
&& make -j$(nproc) \
&& make install \
&& ldconfig \
) \
&& rm -r /tmp/hiredis
RUN wget https://github.com/swoole/swoole-src/archive/v${SWOOLE_VERSION}.tar.gz -O /tmp/swoole.tar.gz \
&& mkdir -p /tmp/swoole \
&& tar -xf /tmp/swoole.tar.gz -C /tmp/swoole --strip-components=1 \
&& rm /tmp/swoole.tar.gz \
&& ( \
cd /tmp/swoole \
&& phpize \
&& ./configure --enable-async-redis --enable-mysqlnd --enable-openssl --enable-http2 \
&& make -j$(nproc) \
&& make install \
) \
&& rm -r /tmp/swoole \
&& docker-php-ext-enable swoole
开始构建镜像并启动容器
//需要在Dockerfile 所在目录执行 如果composer 安装失败请重新执行一次 有时候网络不稳定
$ sudo docker build -t fpm-php-7.2:v1.0.0 .
//如果没有异常 执行到最后会看到如下类似输出 当前已经构建成功
---> fde9a12f4191
Removing intermediate container 762112489b3a
Successfully built fde9a12f4191
//通过如下命令查看已经构建好的镜像
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
fpm-php-7.2 v1.0.0 fde9a12f4191 10 minutes ago 452.4 MB
下面开始启动一个容器来运行该镜像吧
- 启动一个名字为fpm-php-7.2.4容器并且设置自动重启 容器端口9000 映射主机9001 主机目录/data/home 映射到容器/data/home dns使用宿主机 守护方式启动
$ sudo docker run --name php-fpm-7.2.4 \
--restart=always \
-p 9001:9000 \
-v /data/home:/data/home \
-v /data/logs/php7:/data/logs \
$(cat /etc/hosts|awk -F ' ' '{if(NR>2){print "--add-host "$2":"$1}}') \
--privileged \
-d fpm-php-7.2:v1.0.0
//出现如下输出 则启动成功
$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
642e62c1eeda fpm-php-7.2:v1.0.0 "docker-php-entrypoi 4 minutes ago Up 4 minutes 0.0.0.0:9001->9000/tcp php-fpm-7.2.4
有任何疑问都可以关注作者公众号点击菜单–>联系作者相互探讨交流
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201210194822590.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NsdGlu,size_16,color_FFFFFF,t_70)