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复制共享在前文详细讲解过,此处不再赘述。

如图所示:

制作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

用docker build 生成nginx镜像

制作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

编写tomcat守护进程脚本

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启动时要执行的脚本

用docker build 生成tomcat镜像

制作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

用docker build 生成mysql镜像

至此,镜像都已经做好。

下面开始启动容器

先启动mysql

启动tomcat连接mysql

再启动nginx连接两台tomcat

Docker ps 查看容器启动状态

开始测试

验证tomcat连接mysql

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

时间: 2024-08-10 12:42:52

Docker分离部署MySQL、Nginx+Tomcat复制共享的相关文章

jenkins在使用maven部署到nginx+tomcat服务器时出现504错误

环境:jenkins+maven+nginx+tomcat 在执行jenkins job发布项目到远程服务器,服务器使用nginx+tomcat.默认使用80端口,通过nginx转发请求.在执行tomcat:redeploy时,出现下面的错误: [ERROR] Failed toexecute goal org.codehaus.mojo:tomcat-maven-plugin:1.1:redeploy (default-cli)on project sgt-node: Cannot invok

Linux平台(Centos7)-lnmp一键式部署mysql,nginx,php,php-fpm服务

Linux平台(Centos7)-lnmp一键式部署mysql,nginx,php,php-fpm服务 1. 部署方式1:手动部署. 6 1.1. 配置防火墙. 6 1.2. 关闭firewall 6 1.3. 安装iptables防火墙. 6 1.4. 安装Apache 7 1.5. 安装MariaDB 9 1.5.1. 安装MariaDB 9 1.5.2. 启动服务. 10 1.5.3. 设置开机启动. 10 1.5.4. 为root账户设置密码. 11 1.5.5. 重启MariaDB 1

tomcat 安装配置部署到nginx+tomcat+https

目录 1 Tomcat简介 2.下载并安装Tomcat服务 2.2 部署java环境 2.3 安装Tomcat 2.4 Tomcat目录介绍 (关注点 bin conf logs webapps) 2.5 启动Tomcat 3.2 Tomcat管理 8 搭建jpress--java 版本的wordpress tomcat 配置文件 conf/server.xml tomcat 自定义网站目录 Tomcat多实例 (多个虚拟主机) tomcat反向代理集群 tomcat监控 zabbix监控 ng

在腾讯CentOS7.4云服务器上安装Docker并安装MySQL和Tomcat应用

提示:以下是在腾讯CentOS7.4云服务器上操作. Docker的基本操作:https://www.cnblogs.com/opsprobe/p/10963098.html 一.安装Docker # 使用yum命令在线安装 yum install docker # 安装后查看Docker版本 docker -v # 启动与停止Docker systemctl命令是系统服务管理器指令,它是 service 和 chkconfig 两个命令组合. 启动docker:systemctl start

docker docker-compose部署mysql和redis

一 docker部署mysql和redis 1. docker 安装mysql docker run -p 3306:3306 --name mysql --env MYSQL_ROOT_PASSWORD=123zxc -d mysql:5.7 # 停止容器服务命令 docker stop mysql 2. docker 安装redis docker run -d --name myredis -p 6379:6379 redis --requirepass "mypassword"

如何利用 docker 快速部署 Mysql 服务

docker 基础教程不再多说,这里只着重讲如何使用 docker 部署 mysql 服务 docker 拉取 访问 dockerhub,搜索关键词 mysql,我这里选择 mysql-server,然后执行拉取命令,注意可以选择tag版本,默认是latest. docker pull mysql/mysql-server:tag 等待拉取完成即可. docker Mysql-server 启动与配置 docker 部署的优势就在于其快速便捷,下面就进行几项步骤: 启动 docker 该容器命名

【nginx】nginx tomcat session 共享配置

tomcat,redis下载忽略. 一.从github上下载源码,https://github.com/jcoleman/tomcat-redis-session-manager, 将源码复制到开发工具,打包成jar.注意tomcat版本,此处用tomcat 7.0.72,maven编译环境同样为1.7. 二.准备两个tomcat, 版本为上述7.0.72. 并修改指定端口,8081,8082,将上述jar,redis,commons-pool2 放到tomcat lib目录中. 按照githu

nginx+tomcat+memcached共享session-id

一.节点信息                 192.168.1.133 nginx 192.168.211.133 | ---------------------------------- |                                        | tomcatA (211.40)                tomcatB(211.132) memcacheA(211.136)        memcachB(211.137) 配置好固定IP 关闭selinux

docker分离部署lnmp

以下所需的全部的文件.镜像.软件,如有需要请到我的百度云分享下载: 链接:http://pan.baidu.com/s/1kUVNdsj 密码:an9l 项目需求: 构建lnmp平台. 要求nginx.php.mysql分开布署. Nginx通过fastcgi方式支持php动态页面 实验完整框架如下: 说明:使用单一进程容器,即一个容器只运行一种服务,而不是把所有服务放在一个容器的设计,让lnmp项目需要的Nginx.PHP.MySQL组件,分别运行在各自镜像创建出来的独立容器中. 实验步骤如下