一、前言

        这段时间一直在研究docker的部署及相关开发环境、生产环境的搭建。但最终技术的学习就是用来实际使用的,所以就想将单位中的机房逐步从单机安装环境过渡到通过docker部署多个开发环境(生产环境)。

 

二、需求

        单位机房的IP有限,我们都是通过“IP:端口”的形式来访问的。这样带来一个弊端就是每次部署一个新的开发环境,都需要在防火墙里部署相应的NAT(有次部署完NAT后没有保存,在临时断电后丢失了很多的NAT设置)。

        这次我的设想是将我们公司的一个(或多个)二级域名绑定在机房ip上,并在路由器中设置80端口转发到我们已经部署docker的这台服务器上(假设是10.10.10.10),并通过nginx服务器的反向代理实现访问二级域名即可直接进入相应服务器(或docker容器)中的开发环境。

 

三、docker和nginx的安装部署

1. 安装docker

        具体参见之前的文章,按步骤进行操作即可完成docker-io的安装。

        1) 玩转 docker 入门(1) docker 在 CentOS 7.4 的安装部署

        2) 玩转 docker 入门(2) docker-io 在 CentOS 7.4 的基本使用流程

        3) 玩转 docker 入门(3) docker 的常用命令 解析

2. 获取 nginx 镜像

docker search nginx

3. 下载 nginx 镜像

docker pull nginx

4. 创建并启动nginx容器

docker run –name=nginx -p 80:80 -v /nginx/conf.d:/etc/nginx/conf.d -d nginx

        这样,我们已经创建了一下名字为nginx的容器,该容器中/etc/nginx/conf.d目录下的文件将与宿主机中/nginx/conf.d目录下的文件保持同步。目录/etc/nginx/conf.d是nginx的站点配置文件夹,下面每一个conf配置文件各自对应一个站点。同样,nginx反向代理的配置也得写在里面。

 

四、配置nginx的反向代理

        到了这一步,nginx的容易已经创建完毕,我们接下来修改对应的配置文件。我在前言中讲过了我们公司机房的独特点,如果你们没有这种情况,可以将1,2,3这几步省略掉。

        1. 将域名(假设为laoliu.ltd)解析到机房对应的IP上,并在防火墙里设置对应的NAT,将机房IP的80端口指向10.10.10.10 的80端口上。

        2. 10.10.10.10这台服务器已经在本文的第三步中安装完了nginx,接下来进入/nginx/conf.d目录,新增一个laoliu.ltd.conf文件,并将下文代码中的内容粘贴进去。(保存并退出,要按ESC并输入:wq)

cd /nginx/conf.d
vi laoliu.ltd.conf
server {
    listen       80;
    server_name laoliu.ltd;      # 要解析进来域名
    location / {
       proxy_pass http://10.10.10.10:80;  #宿主机ip:容器对外的端口号
      }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

        3. 如果你需要多个域名的配置,只需要在/nginx/conf.d目录下加相应的配置文件即可,一般只需要修改server_name和proxy_pass即可。

        4. 重启nginx容器。

 

五、最后一步,重启容器

 

docker restart nginx

六、后记

        1. 打开域名即可看到效果。

        2. 这只是一个初步的设想(所以我在标题里写了“入门”),大家可以发挥想象力,想出更多的运维部署方案。

        3. 有什么事情欢迎沟通交流,我的微信二维码放在下面了,请大家在加的时候做下备注,谢谢!

       4. 感谢网络上那些大神,本文在撰写的时候参考了https://www.jianshu.com/p/6b317192480c这篇文章,特此表示感谢!

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐