Docker Compose部署 nginx代理Tomcat集群

 

一、简介

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

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

  1.1 结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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: '3'
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文件

1
2
3
4
5
6
sudo mkdir webapps/ROOT
 
sudo vim webapps/ROOT/index.jsp
 
 
nginx-tomcat cluster

  2.5 构建

1
docker-compose up

  2.6 查看

1
2
3
4
5
6
7
8
$ 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中)

posted @   Bigberg  阅读(3845)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示