应用场景:
将本地项目中的生成的war包放入tomcat的webapp目录下,并且制作完成该tomcat的dockerfile文件。
步骤:
1.搭建springboot项目和docker环境,步骤省略。本演示demo, docker环境跟项目在同一台机子上。
2.设置打成war包的形式
3.集成docker-maven-plugin并使用
4.确定dockerfile指定的文件夹
5.设置war包资源路径名称
6.执行打包命令
- 设置打成war包的形式
public class ExamdemoInitializer extends SpringBootServletInitializer {
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder){
return builder.sources(ExamdemoApplication.class);
}
}
需要创建一个初始化类继承SpringBootServletInitializer, ExamdemoApplication为springBootApplication启动类。
pom.xml配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.5.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.qqj.examine</groupId>
<artifactId>examdemo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>examdemo</name>
<description>Demo project for Spring Boot</description>
<!-- 设置成war包的形式 -->
<packaging>war</packaging>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.2.2</version>
</dependency>
</dependencies>
<build>
<finalName>examdemo</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.2.2</version>
<configuration>
<!-- 生成的镜像名称 -->
<imageName>example</imageName>
<!-- docker文件夹 -->
<dockerDirectory>docker</dockerDirectory>
<!-- war资源文件所在的位置 -->
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.war</include>
</resource>
</resources>
</configuration>
</plugin>
</plugins>
</build>
</project>
dockerfile文件如下:
#基础镜像
FROM tomcat:8.5
#作者
MAINTAINER Qqjbest <***@qq.com>
#将webapp下的全部删除
RUN rm -rf /usr/local/tomcat/webapps/*
#将target下的xx.war拷贝到/usr/local/tomcat/webapps/下
ADD examdemo.war /usr/local/tomcat/webapps/
#暴露端口
EXPOSE 8080
#设置启动命令
ENTRYPOINT ["/usr/local/tomcat/bin/catalina.sh","run"]
执行编译命令
mvn clean package docker:build
启动docker命令
docker run -p 8099:8080 -d --name tomcat8 c78ab415ac48