文档章节

docker容器互联 分离部署PHP 和 nginx(端口映射方式)

dubox
 dubox
发布于 2017/08/17 03:01
字数 702
阅读 296
收藏 0

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

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

 

1.nginx容器

docker search nginx
docker pull nginx
docker 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,具体版本号可以参考docker-hub网站,也可以使用其他镜像。。。

 

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 参数在容器之间建立连接,个人感觉 端口映射更灵活。。。

© 著作权归作者所有

共有 人打赏支持
dubox
粉丝 3
博文 97
码字总数 27918
作品 0
西安
程序员
私信 提问
Docker虚拟化技术系列之-网络配置

当我们把docker部署好,是不是想docker能联网呢,能跟其他服务器或者应用进行交互访问呢,那么今天我们来给Docker配置独立的IP及容器之间的互联; 内置bridge(nat) 缺点: 需要配套服务注册...

wgkgood
2017/02/21
0
0
详解Docker 端口映射与容器互联

详解Docker 端口映射与容器互联 1、端口映射实现访问容器 1.从外部访问容器应用 在启动容器的时候,如果不指定对应的参数,在容器外部是无法通过网络来访问容器内部的网络应用和服务的。 当容...

kaixin_code
10/25
0
0
基于Docker容器运行环境下的全手动安装WordPress

在过去,搭建wordpress个人博客一般都是在主机里面直接安装数据库和web服务,使得主机利用不够充分,而且硬件扩展性和软件移植行不够好,随着云计算和虚拟化技术的大力发展,采用阿里云提供的...

wuditnt
2017/12/29
0
0
全面理解Docker虚拟化的14个技巧

服务器虚拟化指的是在操作系统与硬件之间加一层,叫做hypervisor层,对下控制硬件,对上承载操作系统,操作系统os以文件形式封装运行,称为虚拟机,主要解决的问题是硬件利用率和灵活性的问题...

让往事随风
2016/04/18
252
0
Docker多容器连接-以Nginx+PHP为例

Docker提供了多个容器之间访问的方法,最简单的方式是直接使用端口映射参数指定映射的端口或者映射所有端口,多个容器直接通过网络端口进行访问。 但网络端口映射方式并不是Docker中连接多个...

mylxsw
2015/06/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周三乱弹 —— 有一天考拉麻麻拉肚子了

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @瘟神灬念 :分享周汇洋的单曲《Man Srae(曼斯拉之舞)》:美滋滋。。。。 手机党少年们想听歌,请使劲儿戳(这里) 我听了一下 赶紧关了, ...

小小编辑
42分钟前
13
3
oh-my-zsh 自定义

GitHub 地址 基于 oh-my-zsh 的自定义配置,增加了一些个人常用插件与皮肤。 采用的是 git submodule 来维护,包括 oh-my-zsh,之所以这么搞,主要是手头有多台 linux 需要维护, 每台机器、...

郁也风
今天
6
0
Docker安装踩坑:E_FAIL 0x80004005的解决

参考 菜鸟教程--Windows Docker 安装 http://www.runoob.com/docker/windows-docker-install.html 官方文档-Install Docker Toolbox on Windows https://docs.docker.com/toolbox/toolbox_in......

karma123
今天
6
0
js垃圾回收机制和引起内存泄漏的操作

JS的垃圾回收机制了解吗? Js具有自动垃圾回收机制。垃圾收集器会按照固定的时间间隔周期性的执行。 JS中最常见的垃圾回收方式是标记清除。 工作原理:是当变量进入环境时,将这个变量标记为“...

Jack088
昨天
18
0
大数据教程(10.1)倒排索引建立

前面博主介绍了sql中join功能的大数据实现,本节将继续为小伙伴们分享倒排索引的建立。 一、需求 在很多项目中,我们需要对我们的文档建立索引(如:论坛帖子);我们需要记录某个词在各个文...

em_aaron
昨天
27
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部