Docker 安装 PHP

查找指定版本PHP镜像

$ docker search php:7.2.0-fpm

拉取镜像

$ docker pull php:7.2.0-fpm

运行容器

$ docker run --name docker-php-fpm -p 9000:9000 -d php:7.2.0-fpm

把配置文件复制到本地

$ cd /Users/ct/etc/docker/php7.2/php-fpm.d/

$ docker cp docker-php-fpm:/usr/local/etc/php-fpm.d/www.conf www.conf

$ cd /Users/ct/etc/docker/php7.2/

$ docker cp docker-php-fpm:/usr/src/php/php.ini-production php.ini

注意:docker-php-fpm:/usr/src/php/php.ini-production,在实例出的容器中,不一定是路径src/php,拉取的php版本镜像不同,php.ini路径有可能不同。

可以这样查看php.ini路径

# 先进入容器

$ docker exec -it docker-php-fpm /bin/bash

$ cd /usr/src/ && ls

# 有以下两个文件

php.tar.xz   php.tar.xz.asc

# 这里我们需要解压php.tar.xz文件,因为php.ini-production就在其中

# 先解压xz

$ xz -d php.tar.xz  

# 再解压tar

$ tar -xvf  php.tar

解压完毕后, php.ini-production便出现了,我当时的路径是/usr/src/php-7.1.9/php.ini-production。

在本地服务器修改 php.ini 的内容,设置cgi.fix_pathinfo=1

注意:前面关于php-fpm的一系列操作主要是为了获得配置文件,并没有挂载本地目录到容器中,所以接下来需要删除容器,重新实例一个容器出来

$ docker stop docker-php-fpm

$ docker rm docker-php-fpm

$ docker run --name docker-php-fpm -p 9000:9000 -v /Users/ct/project:/var/www/html -v /Users/ct/etc/docker/php7.2/php-fpm.d/www.conf:/usr/local/etc/php-fpm.d/www.conf -v /Users/ct/etc/docker/php7.2/php.ini:/usr/local/etc/php/php.ini -d php:7.2.0-fpm

常见异常:

使用docker中部署的PHP连接MySQL的时候,如果报以下异常:

"could not find driver (SQL: xxxx)"

原因:docker中部署的PHP缺少pdo_mysql扩展。

安装pdo_mysql扩展:

# 先进入容器

$ docker exec -it docker-php-fpm /bin/bash

在该镜像的/usr/local/bin目录下有一个docker-php-ext-install程序专门用来安装php扩展

运行docker-php-ext-install即可显示出能够安装的扩展,配合docker-php-ext-enable程序可以控制扩展的启动/禁用

$ cd /usr/local/bin

$ ./docker-php-ext-install pdo_mysql

相关推荐