Docker 构建PHP镜像
一、构建PHP镜像需要用到的命令
以下命令都需要在php容器中执行
docker-php-source:是在PHP容器中创建一个/usr/src/php的目录,里面放了一些自带的文件,自带的PHP扩展,扩展存放的路径/usr/src/php/ext
docker-php-source [ extract | delete ] 参数说明: extract : 创建并初始化 /usr/src/php目录 delete : 删除 /usr/src/php目录
docker-php-ext-install:用来安装并启动php扩展
docker-php-ext-install "源码包名" 安装说明: "源码包"需要放在 /usr/src/php/ext 目录下 默认情况下,PHP容器没有/usr/src/php这个目录,需要执行# docker-php-source extract 来生成。 docker-php-ext-install 安装的扩展在安装完成后,会自动调用docker-php-ext-enable来启动安装的扩展。 卸载扩展,直接删除/usr/local/etc/php/conf.d 对应的配置文件即可。
docker-php-ext-enable:就是用来启动PHP扩展的。我们使用pecl安装PHP扩展的时候,默认是没有启动这个扩展的,如果想要使用这个扩展必须要在php.ini这个配置文件中去配置一下才能使用这个PHP扩展。而 docker-php-ext-enable 这个命令则是自动给我们来启动PHP扩展的,不需要你去php.ini这个配置文件中去配置。
安装redis扩展 pecl install redis-5.3.4 docker-php-ext-enable redis
二、按需求构建php镜像,安装需要的php模块
# cat Dockerfile FROM php:7.3.28-fpm ADD swoole.tar.gz /usr/src/php/ext/ # 需要先自行下载 curl -fsSL 'https://pecl.php.net/get/swoole-4.5.9.tgz',解压后包名修改为swoole,再压缩成tar包。也可以直接在容器中下载改名,因为网络原因经常失败,所以先在本地下载后改名打包。 RUN apt-get update && apt-get install -y \ bzip2 \ libbz2-dev \ libpng-dev \ libgmp-dev \ libxml2-dev \ libxslt1-dev \ libzip-dev \ && docker-php-source extract \ && docker-php-ext-install exif \ bcmath \ bz2 \ calendar \ gd \ gettext \ gmp \ mysqli \ pcntl \ pdo_mysql \ shmop \ soap \ sockets \ sysvsem \ xmlrpc \ xsl \ zip \ swoole \ && pecl install redis-5.3.4 \ && pecl install mongodb \ && docker-php-ext-enable redis mongodb \ && docker-php-source delete \ && rm -rf /var/lib/apt/lists/* \ && apt-get clean
安装php模块的时候一些依赖报错
模块名称:bz2 报错:configure: error: Please reinstall the BZip2 distribution
解决方法:apt-get install bzip2 libbz2-dev -y
模块名称:gd 报错:configure: error: png.h not found.
解决方法:apt-get install libpng-dev -y
模块名称:gmp 报错:configure: error: Unable to locate gmp.h
解决方法:apt-get install libgmp-dev
模块名称:soap 报错:configure: error: libxml2 not found. Please check your libxml2 installation.
解决方法:apt-get install -y libxml2-dev -y
模块名称:xmlrpc 报错:configure: error: libxml2 not found. Use --with-libxml-dir=<DIR>
解决方法:apt-get install -y libxml2-dev -y
模块名称:xsl 报错:configure: error: xslt-config not found. Please reinstall the libxslt >= 1.1.0 distribution
解决方法:apt-get install libxslt1-dev
模块名称:zip 报错:checking for the location of zlib... configure: error: zip support requires ZLIB. Use --with-zlib-dir=<DIR> to specify prefix where ZLIB include and library are located
解决方法:apt-get install libzip-dev -y