文章524
标签277
分类67

使用Docker-Maven插件部署Tomcat

学习了Docker之后, 在项目部署时是真的香, 不需要破坏宿主本地环境, 能够统一部署, 环境相同, 构建集群也方便. 所以现在即使开发个JSP, 部署在Tomcat也不想在本地下一个Tomcat了

查阅了网上的相关资料, 不是搞本地资源映射, 就是自己在构建一个镜像, 不是很方便

本篇总结了直接使用官方的Tomcat镜像, 通过Maven插件直接构建项目镜像!


使用镜像说明

由于本项目使用的是JDK 11开发, 所以在部署时使用的是官方的镜像: tomcat:9.0.30-jdk11

拉取:

1
docker pull tomcat:9.0.30-jdk11

说明:

如果你是用其他JDK版本, 或是Tomcat版本, 可在DockerHub官方查找所需镜像: Tomcat官方镜像


添加Maven插件

使用的是docker-maven-plugin插件, 可以在maven中直接通过mvn docker:build等命令创建, 而不需要再编写Dockerfile

在pom中添加:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<build>
<plugins>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.2.1</version>
<configuration>
<imageName>image-name</imageName>
<baseImage>tomcat:9.0.30-jdk11</baseImage>
<maintainer>Jasonkay jasonkayzk@gmail.com</maintainer>
<resources>
<resource>
<targetPath>/usr/local/tomcat/webapps</targetPath>
<directory>${project.build.directory}</directory>
<include>*.war</include>
</resource>
</resources>
<runs>
<run>mv /usr/local/tomcat/webapps/${project.build.finalName}.war /usr/local/tomcat/webapps/ROOT.war</run>
</runs>
</configuration>
</plugin>
</plugins>
</build>

说明:

① 在configuration标签中进行配置, 更详细的配置可见: docker-maven-plugin官方

② imageName: 配置构建后的镜像名称

③ baseImage: 相当于Dockerfile中的FROM, 指明基于哪个镜像构建

④ maintainer: 镜像作者

⑤ resources: 添加构建镜像所需的资源文件(是将资源添加到镜像中, 而非映射)

  • targetPath: 在镜像中的位置, /usr/local/tomcat/webapps是tomcat镜像中的部署位置
  • directory: 源文件所在目录, ${project.build.directory}表示项目构建后的目录
  • include: 包括的源文件, *.war表示包括构建的war包

⑥ runs: 执行命令, 类似于Dockerfile中的CMD

补充说明:

<run>mv /usr/local/tomcat/webapps/${project.build.finalName}.war /usr/local/tomcat/webapps/ROOT.war</run>表示

将添加到tomcat目录中的war包重命名为ROOT.war

在Tomcat的webapps目录下部署项目时的特点:

  • war包会自动解压;
  • 默认的访问路径是http://ip:port/projectName/, 即访问时必须加上项目名称;
  • 对于ROOT.war为默认的项目, 可以直接使用http://ip:port/访问, 即不需要项目名称

而在run中的命令即重命名war包为ROOT.war, 即可不添加项目名称进行访问!


项目构建

完成项目的开发之后, 直接使用下面的命令即可构建镜像:

1
mvn clean package docker:build

然后运行镜像即可



本文作者:Jasonkay
本文链接:https://jasonkayzk.github.io/cn/2020/01/14/%E4%BD%BF%E7%94%A8Docker-Maven%E6%8F%92%E4%BB%B6%E9%83%A8%E7%BD%B2Tomcat/
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可