使用 Docker 快速搭建 Tomcat 测试环境
1 需求
碰到一个项目,要维护历史代码,运行环境是 Tomcat7、Java6。需要在现有的测试服务器上部署版本比较老旧的 Tomcat 环境。
2 思路
部署测试环境,有两个方法,
- 用 Docker 起一个容器;
- 下载 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 吧。