目前 php:fpm的php版本为7.4.8(具体使用的版本不同,可能需要扩展的不同), php:fpm 7.4.8版本中不带zip扩展,需要额外添加
1.创建Dockerfile
#基于PHP fpm
FROM php:fpm
# 创建者说明
MAINTAINER The PHP:FPM Project <chenxue4076@163.com>
# 下载redis,并编译
RUN curl -O "https://pecl.php.net/get/redis-5.3.1.tgz" \
&& tar -zxvf redis-5.3.1.tgz \
&& cd redis-5.3.1 \
&& phpize \
&& ./configure \
&& make \
&& make install
# 开启redis扩展
RUN docker-php-ext-enable redis
# 添加扩展
RUN docker-php-ext-install pdo_mysql
# 安装 zip扩展
RUN apt-get update && \
apt-get install -y --no-install-recommends libzip-dev && \
rm -r /var/lib/apt/lists/* && \
docker-php-ext-install -j$(nproc) zip
#生成php.ini
RUN cp /usr/local/etc/php/php.ini-production /usr/local/etc/php/php.ini
2.生成镜像, 如果不带 :版本号 会生成latest的版本,在Dockerfile所在目录下运行
#打包生成镜像
# . 为当前目录
# -t 设置标签 名称:版本号
docker build . -t php-fpm-new:v1
3.创建container, 等待生成镜像后,就可以创建container了, 创建命令 可以保存在一个readme文件中,以便以后查询docker生成使用的参数
# 根据镜像创建 container # --name 设置container 名字 # -p 设置端口映射 # -v 配置代码映射 docker run --name php-fpm -p 9000:9000 \ -v /data/www:/var/www \ -v /data/logs:/var/log \ -v /etc/localtime:/etc/localtime:ro \ -d php-fpm-new:v1
这样就可以使用 php-fpm-new:v1的镜像生成出 php-fpm的container了
使用其他扩展,同样放置在 Dockerfile中安装就可以了。
之前有写过一篇没有使用dockerfile 安装 mysql8, php, nginx的: 使用docker的那些坑
(1074)