PHP, 原创, 服务器

使用php:fpm制作docker镜像并添加扩展redis,pdo_mysql等

目前 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)

Related Post