使用 Docker 快速搭建 Tomcat 测试环境

1 需求

碰到一个项目,要维护历史代码,运行环境是 Tomcat7、Java6。需要在现有的测试服务器上部署版本比较老旧的 Tomcat 环境。

2 思路

部署测试环境,有两个方法,

  1. 用 Docker 起一个容器;
  2. 下载 Tomcat 7、JDK 1.6,手动部署。

下面大概设想一下分别使用这两个方法的过程。

2.1 用 Docker 起一个容器的步骤

  • 找到合适的镜像和启动参数
  • 打开 bash
  • docker run

过程大约5分钟,之后泡杯咖啡,坐等镜像下载即可。

2.2 手动部署的步骤

  • 找到 Tomcat 7 的下载地址
  • 下载 Tomcat 7
  • 解压 Tomcat 7
  • 找到 JDK 1.6 的下载地址
  • 下载 JDK 1.6
  • 解压 JDK 1.6
  • 配置环境变量
  • 不好,启动失败了,排查原因
  • 艹,发现配置的环境变量和现有的环境冲突了,开始想办法解决。现有的环境变量根本不知道有哪些,只能一个个尝试
  • 解决碰到的其他问题
  • ...

整个过程大概半天到一天。

3 如何用 Docker 部署 Tomcat

3.0 Docker 安装了吗?

可以使用 docker version 查看 Docker 是否已经安装,已经安装的情况下,结果大概是下面这样:

[root@iZ23b035qp3Z ~]# docker version
Client:
 Version:      17.06.0-ce
 API version:  1.30
 Go version:   go1.8.3
 Git commit:   02c1d87
 Built:        Fri Jun 23 21:20:36 2017
 OS/Arch:      linux/amd64

Server:
 Version:      17.06.0-ce
 API version:  1.30 (minimum version 1.12)
 Go version:   go1.8.3
 Git commit:   02c1d87
 Built:        Fri Jun 23 21:21:56 2017
 OS/Arch:      linux/amd64
 Experimental: false

发现 Docker 还没安装?看看官方文档吧:Get Docker CE for CentOS

3.1 寻找合适的镜像

打开 Docker Hub,搜索 "Tomcat7 Java6"。我们要寻找的镜像比较古老,搜索结果的第三条是 wegenenverkeer/tomcat7-java6,看名字应该满足需求。

3.2 启动容器

打开 bash,输入下面的命令:

docker run -dt --name tomcat7-java6 -p 8080:8080 -e CATALINA_OPTS='-Xms512m -Xmx1024m -XX:MaxPermSize=512m' --restart=always -v /root/tomcat7/webapps:/opt/tomcat7/webapps wegenenverkeer/tomcat7-java6
# 使用时请把 root 换成当前 Linux 用户名

执行后,Docker 开始下载镜像并启动容器。等容器启动完毕,访问服务器所在的 ip:8080,打开 Tomcat 的控制台,在这里就可以进行 .war 包的上传和部署了。

最后对命令的参数稍作解释:

参数 含义
-dt 作为 daemon 运行
--name tomcat7-java6 给容器起个名字,方便以后管理
-p 8080:8080 将容器的8080端口映射到主机的8080端口,假如设置成 -p 5000:8080,访问主机的5000端口的请求会映射到容器内部的8080端口
-e CATALINA_OPTS='-Xms512m -Xmx1024m -XX:MaxPermSize=128m' 环境变量,这里传入了 JAVA_OPTS,用来设置 JVM 的内存大小
--restart=always 万一容器挂了,自动重启
-v /root/tomcat7/webapps:/opt/tomcat7/webapps 把主机的 /root/tomcat7/webapps 目录映射到容器内的 /opt/tomcat7/webapps 目录,这样就可以不进入容器内部,直接在主机的 /root/tomcat7/webapps 目录下部署 .war 包了
wegenenverkeer/tomcat7-java6 Docker Hub 上的镜像名

测试环境的部署至此结束。端起刚刚泡好的咖啡,刷刷 V2EX 吧。