Docker分离部署MySQL、Nginx+Tomcat复制共享

防伪码:失去只是一种姿势,得到并不等同于幸福

项目需求:

1、nginx容器作为整个架构中前端服务器监听80端口接收用户的jsp页面请求,并将用户的jsp请求分发给tomcat web容器,tomcat容器需要连接mysql数据库容器。

2、nginx容器做为前端服务器可以直接响应用户的静态页面请求,jsp动态页面请求交给tomcat容器处理(静动分离)

3、通过session复制共享:session replication,实现tomcat服务器之间同步session,使session保持一致。

注:http://yw666.blog.51cto.com/11977292/1888747,session复制共享在前文详细讲解过,此处不再赘述。

如图所示:

wKioL1h-OJfAu8VMAAB_uUH6wOI048.jpg-wh_50

制作nginx镜像

from docker.io/centos:centos6
add nginx-1.6.0 /nginx-1.6.0
run yum -y install gcc pcre pcre-devel zlib-devel make
run useradd nginx -s /sbin/nologin
run cd /nginx-1.6.0 && ./configure --prefix=/nginx --user=nginx --group=nginx && make &&
make install
run echo "daemon off;" >> /nginx/conf/nginx.conf
run echo 'ip1=$(cat /etc/hosts | grep tomcat1 | awk '"'{print "'$1'"}'"')' >>
/7.sh
run  echo 'ip=$(cat /etc/hosts | grep tomcat2 | awk '"'{print "'$1'"}'"')' >>
/7.sh
run echo "sed -i -e '33 i"'\u'"pstream backend {' -e '33 i"'\s'"erver ""'"'$ip'"'"":8080
weight=1;' -e '33 i"'\s'"erver ""'"'$ip1'"'"":8080 weight=1;}' -e '46 i"'\p'"roxy_pass http://backend;' /nginx/conf/nginx.conf" >> /7.sh
run echo "/nginx/sbin/nginx" >> /7.sh
cmd source /7.sh


wKiom1h-OY7yNK8YAAF4VZEcVE0315.jpg-wh_50

用docker build 生成nginx镜像

wKiom1h-OZvDJKTqAAAZAZzJvS8974.png-wh_50

制作tomcat镜像

from docker.io/centos:centos6
add apache-tomcat-7.0.54 /apache-tomcat-7.0.54
add jdk1.7.0_65 /jdk1.7.0_65
add 123.sh /123.sh
add profile /profile
run mv /jdk1.7.0_65 /java
run mv /apache-tomcat-7.0.54 /tomcat7
add server.xml /tomcat7/conf/server.xml
add context.xml /tomcat7/conf/context.xml
run cp -rf /profile /etc/profile
run echo 'ip1=$(ifconfig | grep Bcast | awk '"'{print "'$2'"}'"' | awk -F : '"'{print
"'$2'"}')" >>  /8.sh
run echo 'ip2=$(cat /etc/hosts | grep mysql | awk '"'{print "'$1'"}'"')' >> /8.sh
run echo "sed -i '118 "'i\a'"ddress="'"'"'"'$ip1'"'"'"'"'""
/tomcat7/conf/server.xml" >> /8.sh
run echo "sed -i '23 i"'\u'"rl="'"'jdbc:mysql://"'"'$ip2'"'":3306/javatest'"'"/>'
/tomcat7/conf/context.xml" >> /8.sh
add mysql-connector-java-5.1.22-bin.jar /tomcat7/lib/mysql-connector-java-5.1.22-bin.jar
add 456.sh /456.sh


cmd source /456.sh


wKioL1h-OcnieC5dAAHGbrA5YUU278.jpg-wh_50

编写tomcat守护进程脚本

wKioL1h-OeHhAvRfAAAWPHqmKIk047.png-wh_50

wKiom1h-Oe-j3MroAAA7WIeyFuo319.png-wh_50

program="/tomcat7/bin/startup.sh"
   progress="tomcat"
 
   while true;
   do
           sleep 10
           progremflag=`ps -ef |grep $progress|wc -l`
          echo $progremflag
          if [ $progremflag -le 10 ];then
                  $program >/dev/null 2>&1 &
          fi
  done


编写cmd启动时要执行的脚本

wKioL1h-OgPjKNK3AAAkG3cVox4293.png-wh_50

用docker build 生成tomcat镜像

wKiom1h-Ozezrp8DAABcBYmj6Bs397.png-wh_50

制作mysql镜像

from docker.io/centos:centos6
add cmake-2.8.12 /cmake-2.8.12
add  mysql-5.5.38 /mysql-5.5.38
run yum -y install ncurses-devel gcc gcc-c++
run cd /cmake-2.8.12 && ./configure && gmake && gmake install
run cd /mysql-5.5.38 && cmake -DCMAKE_INSTALL_PREFIX=/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci
-DWITH_EXTRA_CHARSETS=all -SYSCONFDIR=/etc && make && make install
run rm -rf /etc/my.cnf
run cp /mysql-5.5.38/support-files/my-medium.cnf /etc/my.cnf
run cp /mysql-5.5.38/support-files/mysql.server /mysqld
run chmod 777 /mysqld
run groupadd mysql
run useradd -M -s /sbin/nologin mysql -g mysql
run chown -R mysql:mysql /mysql
run /mysql/scripts/mysql_install_db --user=mysql --basedir=/mysql/ --datadir=/mysql/data/
run ./mysqld start &&  cd /mysql/bin && echo "grant all privileges on *.* to 'root'@'%.%.%.%'
identified by '123456';" | ./mysql -u root && echo "create database javatest;" | ./mysql -u root && echo "create table javatest.yw(id int);" | ./mysql -u root
cmd cd /mysql/bin && ./mysqld_safe


wKiom1h-O2zyPPUbAAH-3BVBF1U305.jpg-wh_50

用docker build 生成mysql镜像

wKiom1h-O4TARq1oAAAZK0dogZA600.png-wh_50

至此,镜像都已经做好。

下面开始启动容器

先启动mysql

wKioL1h-O7HzeJQZAAAq1aoQx7c627.png-wh_50

启动tomcat连接mysql

wKiom1h-O8SCmkL7AABNtuQRTSU564.png-wh_50

再启动nginx连接两台tomcat

wKioL1h-O9HCLDHOAACgeEEsB7E797.jpg-wh_50

Docker ps 查看容器启动状态

wKiom1h-O-CBKn7AAABlXpUHSXM889.png-wh_50

开始测试

wKiom1h-PIGxbKL1AAELbpq6syI380.jpg-wh_50

wKiom1h-PAjTL2qmAAEQvOB9vOM770.jpg-wh_50

验证tomcat连接mysql

wKioL1h-PGXgooUhAAGOXaEcANQ337.jpg-wh_50

wKioL1h-PDDh8cj9AAAmWtVmroQ508.png-wh_50

谢谢观看,真心的希望能帮到您!

 

优秀的个人博客,低调大师

微信关注我们

原文链接:https://blog.51cto.com/yw666/1892746

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
优质分享Android(本站安卓app)

优质分享Android(本站安卓app)

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Mario,低调大师唯一一个Java游戏作品

Mario,低调大师唯一一个Java游戏作品

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。

Java Development Kit(Java开发工具)

Java Development Kit(Java开发工具)

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。