一、docker普通安装部署lnp示例(没有m,因为mysql取其他服务器的数据库)
1、docker安装nginx(在/root目录即可,后面如无说明也是相同...)
docker pull nginx:latest
2、docker安装php-fpm,为了跟测试环境一致这里安装的是7.2.18(在/root目录即可,后面如无说明也是相同...)
docker pull bitnami/php-fpm:7.2.18-ol-7-r33-prod
注意:若安装的是php-fpm5.6,启动后phpinfo报timezone错误,则,可以进入php-fpm5.6的容器内,直接写入以下代码到conf.d文件夹下(因为php的配置会默认加载/usr/local/etc/php/conf.d/下的.ini文件)
printf '[PHP]\ndate.timezone = Asia/Shanghai\n' > /usr/local/etc/php/conf.d/tzone.ini
此时打开tzone.ini文件会发现
[PHP] date.timezone = PRC
3、启动php(在/root目录即可,后面如无说明也是相同...)
docker run --name myphp-fpm -v ~/nginx/www:/www -d bitnami/php-fpm:7.2.18-ol-7-r33-prod
4、在/root目录新建文件夹
mkdir ~/nginx/conf/conf.d
5、新建如下文件
vim ~/nginx/conf/conf.d/runoob-test-php.conf
官方的示例如下
server { listen 80; server_name localhost; location / { root /usr/share/nginx/html; index index.html index.htm index.php; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } location ~ \.php$ { fastcgi_pass php:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /www/$fastcgi_script_name; include fastcgi_params; } }
由于我们是tp5.1,public目录不一样,以及还有rewrite规则,所以我们修改为如下(在fastcgi_param处的'/www'后增加'/public'目录,增加rewrite规则,以及deny all规则)
server { listen 80; server_name localhost; location / { root /usr/share/nginx/html; index index.html index.htm index.php; if (!-e $request_filename) { rewrite ^(.*)$ /index.php?s=$1 last; break; } } location ~ /Tpl/.*\.html { deny all; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } location ~ \.php$ { fastcgi_pass php:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /www/public/$fastcgi_script_name; include fastcgi_params; } }
6、启动nginx(若格式有误,建议到官网上复制:https://www.runoob.com/docker/docker-install-php.html)
docker run --name runoob-php-nginx -p 8083:80 -d \ -v ~/nginx/www:/usr/share/nginx/html:ro \ -v ~/nginx/conf/conf.d:/etc/nginx/conf.d:ro \ --link myphp-fpm:php \ nginx
7、在/root/nginx下创建www目录
mkdir ~/nginx/www
8、把tp5.1的项目代码上传到/root/nginx/www目录中,再重启一下php-fpm即可
docker restart myphp-fpm
二、docker-composer的yaml方式部署示例