Docker 部署PHP项目
前言
最近需要使用一个别的大佬写好的api,是用php写的,大佬那边提供的服务随时可能失效,所以得在自己的服务器部署(大佬提供的php项目源码),就不得不简单学习了一下docker 如何部署php项目。
部署方式
docker下 nginx+php:5.6-fpm
说明
由于Nginx无法解析动态网页,所以动态请求一般需要php来完成.通过fastcgi, 也就是php-fpm(fastcgi的实现)来实现.
开始部署
拉取镜像
# 拉取nginx镜像
docker pull nginx
# 拉取php:5.6-fpm镜像
docker pull php:5.6-fpm
测试启动nginx
docker run --name nginx-test -p 8080:80 -d nginx
参数说明:
--name : 自定义容器名称
-p : 端口映射,由本地宿主机端口映射到容器内部端口(nginx默认监听80端口)
-d : 让容器在后台运行
访问域名+端口号,如果显示nginx的欢迎界面代表nginx就没问题了
启动php:5.6-fpm,挂载数据文件
docker run --name myphp-fpm -v /www/php:/www -d php:5.6-fpm
参数说明:
-v : 数据挂载。左侧为宿主机内你的文件目录,右侧为容器内目录(我这里就用www目录)
重新启动nginx
先停止删除刚刚测试用的nginx容器(因为它可能占用了你开放的为数不多的端口)
# 停止容器
docker stop nginx-test
# 移除容器
docker rm nginx-test
在宿主机下创建一份nginx配置文件,命名为default.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;
}
}
配置文件说明:
- php:9000: 表示 php-fpm 服务的 URL。
- /www/: 是 myphp-fpm 中 php 文件的存储路径,映射到本地的 /www/php 目录。
然后启动我们的nginx
docker run --name runoob-php-nginx -p 8080:80 -d -v /www/php:/usr/share/nginx/html -v /home/mount/nginx/default.conf:/etc/nginx/conf.d/default.conf --link myphp-fpm:php nginx
参数说明:
/www/php
: 是本地 html 文件的存储目录,/usr/share/nginx/html
是容器内 html 文件的存储目录。/home/mount/nginx/default.conf
: 是本地 nginx 配置文件,/etc/nginx/conf.d/default.conf
是容器内 nginx 配置文件。--link myphp-fpm:php
: 把 myphp-fpm 的网络并入 nginx,并通过修改 nginx 的/etc/hosts
,把域名 php 映射成 127.0.0.1,让 nginx 通过 php:9000 访问 php-fpm。
访问测试
看到我们宿主机目录下:
已经放好了一个index.html
访问xxxx:8080
访问大神写的php项目,也就是这个live2d_api-master(魔改看板娘的后端api)