因为宿主机为PHP7,现在需要再运行一下PHP5.6的网站程序,故用docker来运行php5.6的网站, 实现故PHP多版本共存.
docke官方安装
curl -sSL https://get.docker.com/ | sh
国内镜像安装
curl -sSL https://get.daocloud.io/docker | sh
- 首先拉取php-fpm的镜像:
docker pull php:5.6-fpm
拉取时出现net/http:TLShandshaketimeout的错误的解决方法:
echo "DOCKER_OPTS=\"\$DOCKER_OPTS --registry-mirror=http://f2d6cb40.m.daocloud.io\"" | sudo tee -a /etc/default/docker
systemctl restart docker
- 创建一个php 5.6的容器:
docker run -d -v /data/www/php56root:/var/www/php56root -p 9000:9000 --name php56 php:5.6-fpm
- 安装PHP的一些扩展
docker-php-ext-install mysql
docker-php-ext-install mysqli
......
- 配置php.ini
从docker的php容器里把配置文件复制出来编辑, 因为容器里什么软件都没有很不方便
docker cp php56:/usr/local/etc/php/php.ini-production /tmp/php.ini
vi /tmp/php.ini
配置好后, 把文件复制回去容器里
docker cp /tmp/php.ini php56:/usr/local/etc/php/php.ini
重启php容器
docker restart php56
- 拉取nginx镜像
docker pull nginx:latest
- 创建一个nginx的容器:
这里的路径最好和上面PHP的一致, 暂不去细纠了
docker run -d -p 8080:80 --name nginx -v /data/www/php56root:/var/www/php56root --link php56:php562 nginx
- 配置nginx
docker cp nginx:/etc/nginx/conf.d/default.conf /tmp/default.conf
vi /tmp/default.conf
主要是配置PHP那一块,
location ~ \.php$ {
root /var/www/php56root;
fastcgi_index index.php;
fastcgi_pass php56:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
#如果不行, 试一下面这个, 好像看到别的文章说最新版的nginx不支持$document_root
#fastcgi_param SCRIPT_FILENAME /var/www/php56root$fastcgi_script_name;
include fastcgi_params;
}
配置好后, 把文件复制回去容器里
docker cp /tmp/default.conf nginx:/etc/nginx/conf.d/default.conf
重启nginx容器
docker restart nginx
测试一下
http://localhost:8080