博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
docker容器互联 分离部署PHP 和 nginx(端口映射方式)
阅读量:6508 次
发布时间:2019-06-24

本文共 1803 字,大约阅读时间需要 6 分钟。

hot3.png

首先确保已经正确安装docker,并且可以联网。。。

本人是 mac环境,其他环境可能略有差异。。。

 

1.nginx容器

docker search nginxdocker pull nginxdocker run -it --name nginx -v /Users/xxx/www:/data -p 80:80 nginx /bin/bash

1)拉取docker官方的nginx镜像;

2)从刚拉取的nginx镜像 run一个新容器 ;指定容器名 nginx ,挂载本地目录/Users/xxx/www到容器中的/data,映射80端口到主机的80端口;

跑起来后,如果没有意外 在主机上访问 http://127.0.0.1/ 就可以看到 “Welcome to nginx!”了。。。

 

2.php容器

docker run -it --name php-fpm -v /Users/xxx/www:/data -p 9000:9000 php:7.1.8-fpm /bin/bash

这里 可以不用先拉取镜像,docker检查本地不存在所请求的镜像会自动去docker-hub 拉取;

其次,这里使用了php:7.1.8-fpm 冒号后面是镜像版本,默认是latest,这里不用latest 原因是里面貌似没有fpm,具体版本号可以参考网站,也可以使用其他镜像。。。

 

3.配置 nginx和fpm

1)fpm

找到php-fpm的配置文件 www.conf ,将 listen = xxxxxxxxxxx 改为 :

listen = 0.0.0.0:9000

listen = 127.0.0.1:9000

都可以,然后运行命令 php-fpm (或者 全路径;或者 service php-fpm start ;或者 php-fpm start 等等。。。)

在/var/www 新建一个php文件,写好测试代码;

 

2)nginx

编辑nginx 虚拟目录配置文件 :

vi /etc/nginx/conf.d/default.conf(容器默认没有vi,可通过 apt-get update; apt-get install vim; 安装编辑器)

location ~ \.php$ {        root           /var/www;        fastcgi_pass   172.17.0.1:9000;        fastcgi_index  index.php;        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;        include        fastcgi_params;    }

root 的值很重要,这里要填php容器中php项目所在目录 而不是nginx容器中的路径;以前nginx和PHP装在一台“机器”时不存在这个问题,现在分离部署一定要注意。(顺便多说一点,fastcgi_param 参数配置的是nginx请求php-fpm时需要带过去的参数,SCRIPT_FILENAME 表示fpm要执行的PHP文件的路径,而 $document_root的值 就是前面的 root 参数的值,所以root当然要配置成php容器中的php路径。。。)

fastcgi_pass 这里的ip地址可以使用php容器的ip(我的是172.17.0.4),但是容器的ip可能会在容器重启后发生变化,所以这里使用容器的网关(172.17.0.1)。这里说几种查看容器 ip 的方法:

1.从宿主机查看

 $ docker inspect --format '{

{ .NetworkSettings }}'  容器id

2.容器中查看

    a. ifconfig  这个应该很熟,只是容器一般默认没有安装:apt-get install -y net-tools

    b. ip addr

配置好后 重启nginx,访问测试php文件,没有意外就看到你想看到的东西了。。。

 

还有一种是通过 --link 参数在容器之间建立连接,个人感觉 端口映射更灵活。。。

转载于:https://my.oschina.net/u/2399303/blog/1511539

你可能感兴趣的文章
阿里云MaxCompute,用计算力让数据发声
查看>>
tomcat 6 URIEncoding
查看>>
移动网页UI交互设计---体验
查看>>
产品经理工具之–UML建模类
查看>>
linux下IPTABLES配置详解
查看>>
对话Ruby创始人松本行弘、阿里高级技术专家朴灵!
查看>>
771. Jewels and Stones - LeetCode
查看>>
Sed简介
查看>>
WINDOWS DNS备份、还原
查看>>
Hive连接?
查看>>
好程序员大数据笔记之:Hadoop集群搭建
查看>>
如何利用分层测试概念设计针对性测试用例
查看>>
路由器的无线桥接(TP-Link)
查看>>
解决CodeIgniter伪静态失效
查看>>
PostgreSQL数据库压力测试工具pgbench简单应用
查看>>
信息系统审计准则(征求意见稿)
查看>>
世界由物质、能量、信息
查看>>
获取IOS设备型号的代码
查看>>
iOS培训教程——TableView(内置刷新)
查看>>
磁盘的5种卷,RAID—5的修复
查看>>