Docker Compose部署 nginx代理Tomcat集群
一、简介
使用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集群的更多相关文章
- Docker Compose 一键部署Nginx代理Tomcat集群
Docker Compose 一键部署Nginx代理Tomcat集群 目录结构 [root@localhost ~]# tree compose_nginx_tomcat/ compose_nginx ...
- Docker如何使用nginx搭建tomcat集群
首先创建tomcat的文件夹 , 为了方便docker的配置 我这里直接在根目录中创建 第一步:创建文件夹:发布文件夹 mkdir -p /docker/tomcat/webapp8081 mkdir ...
- nginx整合tomcat集群并做session共享----测试案例
最近出于好奇心,研究了一下tomcat集群配置,并整合nginx,实现负载均衡,session共享,写篇记录,防止遗忘.---------菜鸡的自我修炼. 说明:博主采用一个web项目同时部署到两台t ...
- Nginx代理MysqlCluster集群(二)
Nginx代理MySql集群本次实验采用nginx 版本1.12以上 集合了tcp代理功能只需在编译时明文开启指定的功能 --with-stream--prefix=/usr/local/ngin - ...
- Nginx+Memcached+Tomcat集群配置(MSM--win7 64bit)
本次主要是在win7 64 上演示操作. web应用构建 Memcached安装配置启动 Tomcat配置 所需jar包 memcached-session-manager 序列化 contextxm ...
- Ubuntu下基于Nginx实现Tomcat集群负载均衡
版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] Nginx是一款HTTP和反向代理服务器,有关它的介绍可以到网上搜一下,很多很多,不再累述.这里,我们记录一下Nginx ...
- 使用Nginx实现Tomcat集群负载均衡
概述 要解决的问题 环境准备以及问题解决思路 配置 测试 小结 一.概述 使用Nginx主要是来解决高并发情况下的负载均衡问题. 二.要解决的问题 1.最主要是负载均衡请求分发. 2.文件上传功能,只 ...
- Nginx实现tomcat集群进行负载均衡
一.背景 随着业务量和用户数量的激增,单一的tomcat部署应用已经无法满足性能需求,而且对于每次发布项目期间服务不可用的问题也凸显,既然出现了这个问题,那么我们本文就借助nginx来完美的解决这个问 ...
- Nginx+Memcached+Tomcat集群配置实践(Sticky Session)
准备工作 创建一个简单的web应用,名为session.其中有两个页面,分别如下所示: 页面login.jsp <%@ page language="java" conten ...
随机推荐
- make ;makefile; cmake; qmake的区分
1. make 是用来执行Makefile的.2. Makefile是类unix环境下(比如Linux)的类似于批处理的"脚本"文件.其基本语法是: 目标+依赖+命令,只有在目标文 ...
- ubuntu远程桌面、VNC(转载)
VNC 远程桌面 配置/使用 for xfce 本贴主要目的为说明如何在windows系统下远程控制xfce桌面 Ubuntu 的默认GNOME桌面可以在系统设置中直接打开远程桌面,然后用Window ...
- 包含了重复的“Content”项。.NET SDK 默认包含你项目目录中的“Content”项。可从项目文件中删除这些项;如果希望将其显式包含在项目文件中,可将“EnableDefaultContentItems”属性设置为“false”
从.netcore 1.1 升级到2.0时遇到该问题. 参考http://www.cnblogs.com/xishuai/p/visual-studio-for-mac.html 根据提示可知(我是看 ...
- mysql SQL 逻辑查询语句和执行顺序
关键字的执行优先级(重点) fromwheregroup byhavingselectdistinctorder bylimit 先创建两个表 CREATE TABLE table1 ( custom ...
- Linux移植之内核启动过程start_kernel函数简析
在Linux移植之内核启动过程引导阶段分析中从arch/arm/kernel/head.S开始分析,最后分析到课start_kernel这个C函数,下面就简单分析下这个函数,因为涉及到Linux的内容 ...
- Linux移植之内核启动过程引导阶段分析
在Linux移植之make uImage编译过程分析中已经提到了uImage是一个压缩的包并且内含压缩程序,可以进行自解压.自解压完成之后内核代码从物理地址为0x30008000处开始运行.下面分析在 ...
- JQuery.validate 错误信息对话框
<script src="${pageContext.request.contextPath}/static/js/jquery-1.12.1.js"type="t ...
- numpy常见属性、创建数组
1.几种常见numpy的属性 ndim:维度 shape:行数和列数 size:元素个数 >>> import numpy as np #导入numpy模块,np是为了使用方便的 ...
- ui设计学习路线图分享送给初学者
本文来源:千锋UI设计 Ui设计师就业市场前景及薪资很可观,而且现在市场上对于ui设计师的人才需求也很大,所以,现在越来越多的人看好这一行业,纷纷投入到ui设计的学习中来,那么想新手想要学好ui设计, ...
- swift 判断真机还是模拟器
if Platform.isSimulator { // Do one thing print("isSimulator") } else { } struct Platform ...