Docker部署Tomcat

简介

  Tomcat 服务器是一个免费的开放源代码的 Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下普遍使用,是开发和调试 JSP 程序的首选。
  Tomcat 最初是由 Sun 的软件构架师詹姆斯·邓肯·戴维森开发的。后来在他的帮助下 Tomcat 成为开源项目,并由 Sun 贡献给 Apache 软件基金会。
  当配置正确时,Apache 为 HTML 页面服务,而 Tomcat 实际上运行 JSP 页面和 Servlet。
另外,Tomcat 和 IIS 等 Web 服务器一样,具有处理 HTML 页面的功能(但处理静态 HTML 的能力不如 Apache ),另外它还是一个 Servlet 和 JSP 容器,独立的 Servlet 容器是 Tomcat 的默认模式。

设计 Tomcat 的 Dockerfile

  首先,尝试在 Dockerhub 上搜索 Tomcat 相关镜像:

[root@gavin /]# sudo docker search tomcat
NAME                          DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
tomcat                        Apache Tomcat is an open source implementati…   2511                [OK]                
tomee                         Apache TomEE is an all-Apache Java EE certif…   66                  [OK]                
dordoka/tomcat                Ubuntu 14.04, Oracle JDK 8 and Tomcat 8 base53                                      [OK]
bitnami/tomcat                Bitnami Tomcat Docker Image                     29                                      [OK]
kubeguide/tomcat-app          Tomcat image for Chapter 1                      27                                      
...

  可以看到,搜索出很多 Tomcat 镜像。如是个人开发或测试,可以随意选择一个镜像,按照提示启动应用即可。若准备在生产环境中使用,这些镜像都不是那么合适了。原因有三个方面:

  1. 项目需要的Tomcat版本可能不同。
  2. 项目需要的Tomcat变量不一致。
  3. 项目需要的JDK可能不一致。

  因此,比较好的方式应该是由架构师通过 Dockerfile 或者其他方式构建好统一的镜像,然后分发给项目组所有成员来进行。
  下面以 jdk1.8.0_151、apache-tomcat-8.0.33、ubuntu 18.04 为环境介绍如何定制自己的tomcat镜像。

准备工作

  创建 tomcat8.0_jdk1.8 文件夹,下载或复制本地 apache-tomcat-8.0.33 和 jdk1.8.0_151 到 tomcat8.0_jdk1.8 文件夹下。

  创建 Dockerfile 和 run.sh 文件到 tomcat8.0_jdk1.8 文件夹下。

  操作完成后,tomcat8.0_jdk1.8 目录下应如下所示:

[root@gavin tomcat8.0_jdk1.8]# ls
apache-tomcat-8.0.33  Dockerfile  jdk1.8.0_151  run.sh

Dockerfile 文件及其他脚本文件编写

  Dockerfile 文件内容如下:

# 设置继承镜像
FROM sshd:ubuntu

# 提供一些作者信息
MAINTAINER from [email protected]

# 更改系统时区
RUN echo "Asia/Shanghai" > /etc/timezone

# 设置环境变量
ENV CATALINA_HOME /apache-tomcat-8.0.33
ENV JAVA_HOME /jdk1.8.0_151
ENV JRE_HOME /jdk1.8.0_151/jre

# 复制 apache-tomcat-8.0.33 和 jdk1.8.0_151 到镜像中
ADD /tomcat8.0_jdk1.8/apache-tomcat-8.0.33 /apache-tomcat-8.0.33
ADD /tomcat8.0_jdk1.8/jdk1.8.0_151 /jdk1.8.0_151
ADD run.sh /run.sh
RUN chmod +x /*.sh

# 设置端口
EXPOSE 8080

# 设置执行命令
CMD ["/run.sh"]

  run.sh 文件内容如下:

#!/bin/bash

exec ${CATALINA_HOME}/bin/catalina.sh run

创建和测试镜像

  通过下面命令创建 tomcat:8.0:jdk1.8:

[root@gavin tomcat8.0_jdk1.8]# sudo docker build -t tomcat8.0:jdk1.8 .
Sending build context to Docker daemon  399.8MB
Step 1/12 : FROM sshd:ubuntu
 ---> b5fd094edfac
Step 2/12 : MAINTAINER from [email protected]
 ---> Using cache
 ---> 99b9f44c09a8
Step 3/12 : RUN echo "Asia/Shanghai" > /etc/timezone
 ---> Using cache
 ---> 52ce09b10a07
Step 4/12 : ENV CATALINA_HOME /apache-tomcat-8.0.33
 ---> Using cache
 ---> 4d60b29cc0c0
Step 5/12 : ENV JAVA_HOME /jdk1.8.0_151
 ---> Using cache
 ---> 72d0aaff4cdd
Step 6/12 : ENV JRE_HOME /jdk1.8.0_151/jre
 ---> Using cache
 ---> 21cbc3180b88
Step 7/12 : ADD /apache-tomcat-8.0.33 /apache-tomcat-8.0.33
 ---> 175b6557530b
Step 8/12 : ADD /jdk1.8.0_151 /jdk1.8.0_151
 ---> 63e83b6f2485
Step 9/12 : ADD run.sh /run.sh
 ---> b8500320f86d
Step 10/12 : RUN chmod +x /*.sh
 ---> Running in c9e512da7154
Removing intermediate container c9e512da7154
 ---> 5aff4ec4e94b
Step 11/12 : EXPOSE 8080
 ---> Running in 5fa306a6f963
Removing intermediate container 5fa306a6f963
 ---> 1ea225879aa3
Step 12/12 : CMD ["/run.sh"]
 ---> Running in 5b146a2f5146
Removing intermediate container 5b146a2f5146
 ---> a3bfe60dbc1d
Successfully built a3bfe60dbc1d
Successfully tagged tomcat8.0:jdk1.8

  查看目前本地拥有的镜像:

[root@gavin tomcat8.0_jdk1.8]# sudo docker images
REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
tomcat8.0                jdk1.8              a3bfe60dbc1d        59 seconds ago      641MB

  启动一个 Tomcat 容器进行测试:

[root@gavin tomcat8.0_jdk1.8]# sudo docker run -d -p 8080:8080 tomcat8.0:jdk1.8 
3c369a248684f235e44cbe1472293e9399fc98c84a094c8dbcb46e3bc2f94d80

  查看容器信息:

[root@gavin tomcat8.0_jdk1.8]# sudo docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                         PORTS                     NAMES
3c369a248684        tomcat8.0:jdk1.8    "/run.sh"                12 seconds ago      Up 10 seconds                  0.0.0.0:8080->8080/tcp    reverent_feynman

  在本地使用浏览器访问 Tomcat 页面 http://192.168.41.15:8080/:

Docker部署Tomcat_第1张图片

 

在实际环境中,可以通过使用 -v 参数来挂载 Tomcat 的日志文件、程序所在目录、以及与 Tomcat 相关的配置。

 

这篇文章是我学习 Docker 的记录,内容参考自《Docker技术入门与实战》

 

转载于:https://www.cnblogs.com/gavin-guo/p/11481523.html

你可能感兴趣的:(Docker部署Tomcat)