场景介绍:由于我的一个im应用经常给客户部署,该应用涉及到多个服务(redis、mysql、mongo、nginx),一般都是在宝塔进行部署,但是各种问题层出不穷,所以萌生了使用docker compose制作一个一键部署的脚本,其中nginx和php-fpm不在同一台服务器有坑,这里记录,我这里使用临时的php-fpm + nginx容器来演示两个服务不在同一个服务器上时如何配置,没有涉及到其他的服务(redis、mysql、mongo)同时也介绍了如果在同一台服务器时如何处理。
如果需要两个容器进行通信,那么必须要让他们在同一个网络中。
docker network create m1
docker run -it --rm -p 80:80 --network m1 nginx
docker run -it --rm -p 9000:9000 --network m1 alpine:3.14
由于没有配置name,所以我这里需要查看下配置,用ip来解析,使用docker compose可以通过container_name配置容器名称。docker inspect network m1
主要看containers里面的两个容器信息的ip,对应到下面的docker,这里有一个问题,如果容器重启的话,ip有可能会变动,所以建议使用container_name来进行后面的ip配置(就是用container_name来代理后面的ip,本机可以通过ping container_name来测试是否连通,或者看/etc/hosts文件)。
如果nginx和php-fpm在同一台服务器这里是不用修改的。
apk add php php-fpm vi /etc/php7/php-fpm.d/www.conf 主要修改两处 listen=0.0.0.0:9000 listen.allowed_clients = 172.20.0.3
添加php文件
mkdir -p /usr/share/nginx/html && echo "<php? phpinfo();"
注意这是在php-fpm那台服务器,如果实际部署,我们的文件是需要挂在到这里。记得修改后要启动或重启php-fpm,
php-fpm7
,alpine里面这个命令有点怪异。
apk update -y apk add vim vi /etc/nginx/conf.d/default.conf
完整配置
root@67cef1eb971c:/usr/share/nginx/html server { listen 80; listen [::]:80; server_name localhost; location / { root /usr/share/nginx/html; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } location ~ \.php$ { root /usr/share/nginx/html; fastcgi_pass 172.20.0.2:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
修改后记得重启或者重新加载nginx:nginx -t && nginx -s reloat
apk add composer cd /etc/share/nginx/html composer create-project topthink/think=5.0.* ../html --prefer-dist
https://blog.csdn.net/weixin_34551601/article/details/115242284
https://www.cnblogs.com/fansik/p/6635813.html
第一个文档讲了fastcgi_pass参数socket和tcp连接的不同,第二个介绍了nginx和php-fpm不在同一台服务器时的配置。
声明:本站为非盈利性赞助网站,本站所有数据均来自互联网,版权属原著所有,如有需要请联系作者或购买正版。如有侵权,敬请来信联系我们,我们立即删除。
原文链接:https://m.zsyts.cn/6244.html