CentOS 7
Docker 1.16.x
php: 7.3
docker pull php:7.3-apache
可以查看一下php镜像的环境变量
docker inspect php:7.3-apache
step.2 创建Dockerfile在你的php项目项目代码下创建Dockerfile文件,如下结构
-myAppPHP |-src |-index.php |-config |-php.ini |-Dockerfile
注意,建议把php.ini一起拷贝到镜像中
index.php的内容如下
<?phpphpinfo();?>
Dockerifle的内容如下
FROM php:7.3-apacheCOPY ./src /var/www/html/COPY ./config /usr/local/etc/php/
注意,拷贝的路径是src下的文件,到/var/www/html/下,不包括src,如需要包括,则使用COPY 、/var/www/html/
参考地址 https://hub.docker.com/_/php/
step.3 开始构建docker镜像在Dockerfile文件的同级目录下执行构建docker镜像指令
docker build -t phpapp:latest .
查看镜像
docker run -d -p 30001:80 --name myphp phpapp
浏览器输入 IP:30001即可见如下内容
查看默认php模块
# 进入php容器docker exec -it myphp bash
进入容器后适用php -m 查看启用的模块
通过php -i 查看php信息
php -i | grep -i extension_dir 查看拓展目录
执行php安装指令
# 容器中执行docker-php-ext-install pdo_mysqldocker-php-ext-install mysqli
php:7.3-apache ls: cannot access ‘.’: Operation not permitted
这是docker版本过低,把docker升级到1.20以上可以解决
也可以将安装命令做到Dockerfile中
FROM php:7.3-apacheCOPY ./src /var/www/html/COPY ./config /usr/local/etc/php/RUN docker-php-ext-install pdo_mysqlRUN docker-php-ext-install mysqli
其他php的拓展安装php拓展安装过程常用的命令有
docker-php-sourcedocker-php-ext-installdocker-php-ext-enabledocker-php-ext-configure
参考地址https://www.cnblogs.com/yinguohai/p/11329273.html
php的拓展目录在如下目录
cd /usr/src/php/ext/
如无改目录,可能是未解压,我们进入/usr/src,可以看到如下内容
cd /usr/srclsphp.tar.xz php.tar.xz.asc
使用 docker-php-source extract 命令解压
安装拓展时,只需要使用 docker-php-ext-install
启用插件的命令为docker-php-ext-enable
启动的插件配置,我们可以在/usr/local/etc/php目录下的conf.d找到一一对应的模块配置
cd /usr/local/etc/phplsconf.d php.ini php.ini-development php.ini-production# 当个模块的配置文件ls conf.d/docker-php-ext-mysqli.ini docker-php-ext-pdo_mysql.ini docker-php-ext-sodium.ini# 查看配置内容长什么样的cat docker-php-ext-mysqli.iniextension=mysqli.so
显然,跟php.ini中的写法一样,我们也可以直接修改/usr/local/etc/php/php.ini文件,添加php拓展的配置