一、简介

  使用Docker镜像部署Nginx代理的多个Tomcat集群:

  • 使用Dockerfile构建nginx镜像
  • 使用Dockerfile构建tomcat镜像
  • mysql镜像使用docker hub 镜像

  1.1 结构

docker-compose.yml
etc
└── localtime
mysql
├── conf
│   └── my.cnf
└── mysqldb
nginx
├── conf.d
│   └── test.conf
├── Dockerfile
├── logs
├── nginx-1.12.1.tar.gz
└── nginx.conf
tomcat
├── apache-tomcat-8.5.12.tar.gz
├── Dockerfile
├── jdk-8u121-linux-x64.tar.gz
└── server.xml
webapps # webapps 用于放置tomcat项目使用 # mysqldb 数据将会存放在 mysql/mysqldb中

  

二、部署和构建

  2.1 Nginx Dockerfile

FROM centos:latest
MAINTAINER bigberg
RUN yum -y install pcre-devel openssl-devel net-tools gcc gcc-c++ zlib zlib-devel \
make openssl
ADD nginx-1.12.1.tar.gz /tmp/
RUN cd /tmp/nginx-1.12.1 \
&& ./configure --prefix=/usr/local/nginx \
--with-http_ssl_module \
--with-http_gzip_static_module \
--with-http_realip_module \
&& make && make install
RUN mkdir -p /usr/local/nginx/logs \
&& groupadd -g 1001 nginx \
&& useradd -g 1001 -u 1001 -s /sbin/nologin -M nginx CMD ["/usr/local/nginx/sbin/nginx", "-g", "daemon off;"]

nginx dockerfile

  2.2 Tomcat Dockerfile

FROM centos
MAINTAINER bigberg ADD jdk-8u121-linux-x64.tar.gz /usr/local
ENV JAVA_HOME /usr/local/jdk1.8.0_121
ADD apache-tomcat-8.5.12.tar.gz /usr/local
COPY server.xml /usr/local/apache-tomcat-8.5.12/conf/server.xml EXPOSE 8080
ENTRYPOINT ["/usr/local/apache-tomcat-8.5.12/bin/catalina.sh", "run"]

Tomcat Dockerfile

  2.3 docker-compose.yml  

version: ''
services:
# web-server
nginx:
build:
context: ./nginx
dockerfile: Dockerfile
ports:
- "80:80"
- "443:443"
links:
- tomcat01:tomcat01
- tomcat02:tomcat02
- tomcat03:tomcat03
volumes:
- ./webapps:/opt/webapps
- ./nginx/logs:/usr/local/nginx/logs
- ./etc/localtime:/etc/localtime
- ./nginx/nginx.conf:/usr/local/nginx/conf/nginx.conf:ro
- ./nginx/conf.d/:/usr/local/nginx/conf.d/:ro
depends_on:
- mysql
- tomcat01
- tomcat02
- tomcat03
# tomcat
tomcat01:
hostname: tomcat01
build: ./tomcat
links:
- mysql:mysql
volumes:
- ./webapps:/usr/local/apache-tomcat-8.5.12/webapps
- ./etc/localtime:/etc/localtime tomcat02:
hostname: tomcat02
build: ./tomcat
links:
- mysql:mysql
volumes:
- ./webapps:/usr/local/apache-tomcat-8.5.12/webapps
- ./etc/localtime:/etc/localtime tomcat03:
hostname: tomcat03
build: ./tomcat
links:
- mysql:mysql
volumes:
- ./webapps:/usr/local/apache-tomcat-8.5.12/webapps
- ./etc/localtime:/etc/localtime # mysql
mysql:
hostname: mysql
image: mysql:latest
ports:
- "3307:3306"
volumes:
- ./mysql/conf/my.cnf:/etc/mysql/conf.d/my.cnf
- ./mysql/mysqldb:/var/lib/mysql
- ./etc/localtime:/etc/localtime:ro
environment:
- MYSQL_ROOT_PASSWORD=123456

docker-compose.yml

  2.4 编写index.jsp文件

sudo mkdir webapps/ROOT

sudo vim webapps/ROOT/index.jsp

nginx-tomcat cluster

  2.5 构建

docker-compose up

  2.6 查看

$ docker-compose ps
Name Command State Ports
----------------------------------------------------------------------------------------------------------
nginxtomcat_mysql_1 docker-entrypoint.sh mysqld Up 0.0.0.0:3307->3306/tcp
nginxtomcat_nginx_1 /usr/local/nginx/sbin/ngin ... Up 0.0.0.0:443->443/tcp, 0.0.0.0:80->80/tcp
nginxtomcat_tomcat01_1 /usr/local/apache-tomcat-8 ... Up 8080/tcp
nginxtomcat_tomcat02_1 /usr/local/apache-tomcat-8 ... Up 8080/tcp
nginxtomcat_tomcat03_1 /usr/local/apache-tomcat-8 ... Up 8080/tcp

  

  相关文档:https://github.com/Bigberg/docker/tree/master/nginx-tomcat

里面去掉了nginx/tomcat/jdk的安装包,需添加(版本在Dockerfile中)

Docker Compose部署 nginx代理Tomcat集群的更多相关文章

  1. Docker Compose 一键部署Nginx代理Tomcat集群

    Docker Compose 一键部署Nginx代理Tomcat集群 目录结构 [root@localhost ~]# tree compose_nginx_tomcat/ compose_nginx ...

  2. Docker如何使用nginx搭建tomcat集群

    首先创建tomcat的文件夹 , 为了方便docker的配置 我这里直接在根目录中创建 第一步:创建文件夹:发布文件夹 mkdir -p /docker/tomcat/webapp8081 mkdir ...

  3. nginx整合tomcat集群并做session共享----测试案例

    最近出于好奇心,研究了一下tomcat集群配置,并整合nginx,实现负载均衡,session共享,写篇记录,防止遗忘.---------菜鸡的自我修炼. 说明:博主采用一个web项目同时部署到两台t ...

  4. Nginx代理MysqlCluster集群(二)

    Nginx代理MySql集群本次实验采用nginx 版本1.12以上 集合了tcp代理功能只需在编译时明文开启指定的功能 --with-stream--prefix=/usr/local/ngin - ...

  5. Nginx+Memcached+Tomcat集群配置(MSM--win7 64bit)

    本次主要是在win7 64 上演示操作. web应用构建 Memcached安装配置启动 Tomcat配置 所需jar包 memcached-session-manager 序列化 contextxm ...

  6. Ubuntu下基于Nginx实现Tomcat集群负载均衡

    版权声明:本文为博主原创文章,未经博主允许不得转载.   目录(?)[+]   Nginx是一款HTTP和反向代理服务器,有关它的介绍可以到网上搜一下,很多很多,不再累述.这里,我们记录一下Nginx ...

  7. 使用Nginx实现Tomcat集群负载均衡

    概述 要解决的问题 环境准备以及问题解决思路 配置 测试 小结 一.概述 使用Nginx主要是来解决高并发情况下的负载均衡问题. 二.要解决的问题 1.最主要是负载均衡请求分发. 2.文件上传功能,只 ...

  8. Nginx实现tomcat集群进行负载均衡

    一.背景 随着业务量和用户数量的激增,单一的tomcat部署应用已经无法满足性能需求,而且对于每次发布项目期间服务不可用的问题也凸显,既然出现了这个问题,那么我们本文就借助nginx来完美的解决这个问 ...

  9. Nginx+Memcached+Tomcat集群配置实践(Sticky Session)

    准备工作 创建一个简单的web应用,名为session.其中有两个页面,分别如下所示: 页面login.jsp <%@ page language="java" conten ...

随机推荐

  1. Linux下打开超大文件方法

    在Linux下用VIM打开大小几个G.甚至几十个G的文件时,是非常慢的. 这时,我们可以利用下面的方法分割文件,然后再打开. 1 查看文件的前多少行 head -10000 /var/lib/mysq ...

  2. 创建smartfroms页格式

    1.输入TCODE:spad 2.页格式:完全管理  ---> 设备类型 ---> 页格式 ---> 创建 3.比如:长:24.2cm 宽:11.5cm 则设置:纸宽:115MM 纸 ...

  3. JS正则表达式验证是否为11位有效手机号码

    function isPoneAvailable($poneInput) { var myreg=/^[1][3,4,5,7,8][0-9]{9}$/; if (!myreg.test($poneIn ...

  4. Oracle_SQL(3) DML增删改

    sql语言按功能分为:数据定义语言DDL.数据操纵语言DML.数据查询语言DQL.数据控制语言DCL 一.数据操纵语言DML1.insert 新增 语法:insert into <表名> ...

  5. hdu 1495 (搜索) 非常可乐

    http://acm.hdu.edu.cn/showproblem.php?pid=1495 搜索模拟出每此倒得情况就好,详情见代码\ (好困啊!!!!1) #include<cstdio> ...

  6. mysql5.6改进子查询实测试

    表t1,t2 各自生成100万条记录. 表引擎  myiasm  ,查询语句 select * from t1 where id2 in (select id2 from t2 ) 查询速度 2.x秒 ...

  7. About the Cron Expression

    About the Cron Expression Cron is use in Linux for the time schedule Format Seconds Minutes Hours Da ...

  8. JDK 规范目录

    JDK 规范目录 1.1 Java 异常处理 2.1 JDK 之 NIO 2 WatchService.WatchKey(监控文件变化) https://mp.weixin.qq.com/s/NIn2 ...

  9. Python之路番外(第二篇):PYTHON基本数据类型和小知识点

    一.基础小知识点 1.如果一行代码过长,可以用续行符 \换行书写 例子 if (signal == "red") and \ (car == "moving") ...

  10. Python 单列

    1.__new__内置方法 在对类进行实例化时自动执行 功能1:为对象分配空间 功能2:返回空间的引用 2.单列实现方法 class MusicPlayer: # 记录对象内存引用,初始值为None ...