我的环境CentOS 7.5
首先安装 nginx
docker pull nginx
docker pull php:7.1.30-fpm
安装完成之后进行配置,首先要确定网站目录、nginx配置文件目录
mkdir /var/www mkdir /var/conf
cd /var/conf
vim test.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; }
其中root /usr/share/nginx/html 这个地方是指nginx容器中网站目录,要记住,挂载nginx目录时要用。fastcgi_param SCRIPT_FILENAME /www/$fastcgi_script_name; 这里的/www目录是网站目录映射到php-fpm容器中的目录,这个目录也很重要,挂载PHP目录的时候会用。也就是说:
nginx容器中的/usr/share/nginx/html
php-fpm容器中的/www
这两个地方都要映射到宿主机中的/var/www,如果nginx要添加虚拟目录或者添加站点,这配置文件也要同时改这两个地方。
启动php,挂载本地目录,注意,启动nginx和php-fpm必须挂载宿主主机目录:/var/www
docker run --name myphp7 -v /var/www:/www -d php:7.1.30-fpm
docker run --name php-nginx -p 8800:80 -v /var/www:/usr/share/nginx/html -v /var/conf:/etc/nginx/conf.d -d --link myphp7:php nginx
启后后新建一个PHP测试一下:
cd /var/www vim info.php
输入
<?php phpinfo(); ?>
看看能否打开
curl localhost:8000/info.php
结果返回403 Forbidden
因为是CentOS7,尝试关闭SeLinux
vim /etc/selinux/config
SELINUX=disabled
保存重试,仍然返回403 Forbidden。尝试修改权限
chmod -R 777 /var/www/
OK!
半年后补充,php-fpm日志默认输出到窗口的stderr中。要查看窗口内部的stderr则需要使用如下命令:
docker attach --sig-proxy=false php-nginx
php-nginx是容器ID
也可参考以下两篇文章:
https://www.awaimai.com/2120.html
https://www.cnblogs.com/ssjt/articles/9584481.html