一些老代码还跑在php5.6的版本上,homebrew已经不支持5.6了打算迁移到docker上。php5.6的版本需要安装redis、memcached、xdebug的扩展,nginx添加了nginx-http-concat的插件。网上没有找到合适的docker脚本自己花了点时间来编译,脚本已上github https://github.com/lccf/alpine-php56

编译说明

软件版本

  • alpine 3.8
  • php 5.6.40
  • nginx 1.15.12

编译中有很多试错的过程,为节省时间,分成了几个版本,出错后不用从头开始编译。

  • alpine 设置时区,做基础alpine镜像
  • php-base 编译后的php,没有添加扩展
  • php-ext 添加了pdo_mysql、bcmath、intl、gd、opcache、redis、xdebug、memcached等扩展
  • php-nginx 编译nginx,添中nginx扩展,设置启动脚本

按照先后顺序,执行build.sh脚本进行编译。

php编译脚本是从docker-library/php项目修改来的,最新版本已经移除5.6了,需要切换到fab49d4的commit。默认是在dockerfile下载php安装包的,国外网络环境速度比较慢,改为build脚本下载,也可以手动下载好,编译的时候节省时间。

php插件安装的脚本是docker-library/php自带的,使用起来比较方便。但是安装php扩展装的依赖库体积增加了50MB,目前还没有好的解决办法。

nginx脚本是从nginxinc/docker-nginx项目修改来,添加了nginx-http-concat插件。nginx-http-concat项目上release版本有问题,需要下载master分支的源码。

使用说明

默认项目目录 /var/www 启用时默认开启nginx和php。

示例:

1
2
3
4
5
docker run --rm -d --name php5 \
-p 80:80 \
-v /workdir/conf:/etc/nginx/conf.d \
-v /workdir/www:/var/www \
dev/php-nginx:1.15

链接