1 PHP官方镜像深度解析
PHP官方镜像(library/php)是Docker Hub上最受欢迎的镜像之一,但很多人并不清楚其内部结构和使用技巧。官方镜像主要分为三个分支:cli、fpm和zts1。
- CLI分支:没有开启CGI,不能运行fpm,只适合运行命令行PHP脚本
- FPM分支:开启了CGI,可用于Web服务,也能运行CLI命令,是LNMP架构的首选
- ZTS分支:线程安全版本,适用于多线程环境
选择正确的基础镜像至关重要。如果你需要运行Web应用,应选择fpm分支;如果只是运行脚本任务,cli分支更为轻量。
查看官方PHP镜像预安装的扩展很简单:
docker run --rm php:7.2-fpm-alpine php -m
你会发现基础镜像已经包含了Core、ctype、curl、date、dom、fileinfo等常用模块1,但生产环境通常需要更多扩展。
镜像标签的命名规则也很有讲究。例如,php:8.1-fpm-alpine表示PHP 8.1版本,带有fpm功能,基于Alpine Linux构建。Alpine镜像体积小巧,通常只有5MB左右,相比基于Ubuntu的镜像小了近十倍。
2 快速安装PHP扩展的几种方法
为Docker中的PHP安装扩展有多种方法,每种方法各有优劣。以下是三种主流方法:
2.1 使用官方提供的安装命令
官方PHP镜像提供了docker-php-ext-install命令,可以安装核心扩展:
FROM php:7.4-fpm-alpine
RUN docker-php-ext-install pdo_mysql mysqli opcache bcmath
对于PECL扩展,如Redis、Xdebug,需要使用pecl命令:
RUN pecl install redis-5.3.4 && docker-php-ext-enable redis
2.2 使用docker-php-extension-installer
社区开发的docker-php-extension-installer脚本极大简化了扩展安装过程。这是一个全能型脚本,可以自动处理依赖关系:
FROM php:8.1-fpm
# 安装安装器
RUN curl -sSLf \
-o /usr/local/bin/install-php-extensions \
https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions && \
chmod +x /usr/local/bin/install-php-extensions
# 使用单个命令安装多个扩展
RUN install-php-extensions gd intl mysqli pdo_mysql zip opcache redis

最低0.47元/天 解锁文章
3845

被折叠的 条评论
为什么被折叠?



