示意图:

Docker&Nginx&Tomcat
1)Docker构建Tomcat发布Jforum论坛;
2)Nginx负载均衡Tomcat集群&Rewrite规则;
1、Docker构建Tomcat发布Jforum论坛
1)Docker是众多虚拟化技术(VMware ESXI、KVM、XEN、Open-vz、Hyper-v)其中一款软件,Docker虚拟化技术是目前互联网IT企业使用最多的虚拟化技术软件,其特点:轻量级、高性能、安全、稳定、管理方便等。
2)Docker虚拟化技术主要为了解决企业轻量级操作系统和应用容器而诞生的,其产物是Docker容器,Docker容器也被称为轻量级的虚拟机。

3)基于CentOS7.x Linux操作系统(Linux内核版本:3.10+),从0开始构建了一套Docker虚拟化平台,部署的版本为:Docker-19.03.8,如图所示:

4)Docker虚拟化平台创建一台Tomcat WEB容器,要求Tomcat容器内部只包含Tomcat软件程序,启动Tomcat服务进程,对外监听8080端口,并且发布Jforum论坛程序。(Jforum基于JAVA语言开发的网站程序)
5)在Docker官方仓库中搜索Tomcat镜像文件,镜像文件中包含Tomcat软件程序,操作的方法和指令如下:
docker search tomcat8

6)从Docker官方仓库中下载Tomcat镜像文件,下载至Docker宿主机特定目录,操作的方法和指令如下:
docker pull ashince/tomcat8
echo $?

7)查看已下载Tomcat镜像文件的存储路径和镜像列表信息,操作的方法和指令如下:
ls -l /var/lib/docker/image/overlay2/
docker images|grep -aiE tomcat

8)基于Tomcat镜像创建一台Tomcat容器,对外监听8080端口,同时发布Jforum论坛程序,操作的方法和指令如下:
docker run -itd -p 8080:8080 --name=jfedu-web01 --privileged -v /data/webapps/jforum/:/usr/local/tomcat/webapps/ROOT/ ashince/tomcat8:latest
n Run,全新创建并且启动一台容器(轻量级虚拟机);
n -i,interactive打开交互模式;
n -t,tty打开登录终端;
n -d,detach后台运行;
n -p,publish发布端口,将宿主机8080映射至虚拟机的8080(Iptables+DNAT);
n --name,指定或者自定义容器的名称;
n --privileged,开启超级特权模式,支持更多指令操作。
n -v,开启目录映射,将宿主机目录:
/data/webapps/jforum/
映射至容器的发布目录:/usr/local/tomcat/webapps/ROOT/
。
9)查看Tomcat容器的运行状态和IP地址;
docker ps
docker inspect 7b61f05a7148|grep -ai ipaddr|tail -1
docker inspect 7b61f05a7148|grep -ai ipaddr|tail -1|cut -d"\"" -f4
docker inspect 7b61f05a7148|grep -ai ipaddr|tail -1|awk -F\" '{print $4}'
docker inspect 7b61f05a7148|grep -ai ipaddr|tail -1|sed 's/://g;s/,//g;s/ //g;s/IPAddress//g;s/"//g'
docker inspect 7b61f05a7148|grep -ai ipaddr|tail -1|grep -aiowE "([0-9]{1,3}\.){3}[0-9]{1,3}"

10)根据如上操作,Tomcat WEB平台部署成功,通过浏览器直接访问宿主机IP+8080端口,如图所示:
http://118.31.55.30:8080/

11)将宿主机的Jforum软件程序,部署至Tomcat发布目录,因为创建Tomcat容器时,将宿主机目录:/data/webapps/jforum/
映射至容器发布目录:/usr/local/tomcat/webapps/ROOT/
,现在只需要将Jforum程序部署至宿主机:/data/webapps/jforum/
即可。

12)Jforum是基于JAVA语言开发的动态论坛网站程序,默认论坛程序需要连接后端数据库,所以需提前部署MYSQL|Mariadb数据库平台,并且创建Jforum论坛所需库名称、授权用户名和密码访问。
#创建MYSQL数据库平台;
docker run -itd -p 3307:3306 --name=jfedu-db01 --privileged 717160040/mysql5.5
#进入MYSQL数据库容器中;
docker exec -it 97a73dbac06c /bin/bash
#进入MYSQL库中创建jforum库
create database jforum charset=utf8;
#并且授权172.17.0.x网段所有IP,通过jforum用户和1qaz@WSX密码可以访问jforum库所有数据;
grant all on jforum.* to jforum@'172.17.0.%' identified by "1qaz@WSX"; flush privileges;
13)根据如上的jforum论坛操作方法,jforum论坛部署成功,如图所示:

2、Nginx负载均衡Tomcat集群&Rewrite规则
1)根据如上Tomcat发布Jforum论坛,默认通过浏览器可以直接访问了,在企业生产环境中,在一台服务器上通常会部署多个Tomcat实例,提高Tomcat整体并发性能,提高宿主机资源利用率。Docker部署Tomcat多实例的指令如下:
docker run -itd -p 8081:8080 --name=jfedu-web02 --privileged -v /data/webapps/jforum/:/usr/local/tomcat/webapps/ROOT/ ashince/tomcat8:latest

END
时光,在物转星移中渐行渐远,春花一梦,流水无痕,没有在最想做的时候去做的事情,都是人生的遗憾。人生需要深思熟虑,也需要一时的冲动。







