前言
之前写过一篇 《Docker-compose 部署jar包服务》感兴趣的小伙伴可点链接查看。
但很多时候,服务也会打成一个war包来部署,那该怎么办呢?下面是我部署war过程的记录,还是遇到不少坑的。此处做下记录。
项目改造
- 启动类继承SpringBootServletInitializer并重写configure方法。
/**
* 开放平台启动类
*
* @author gourd.hu
*/
@SpringBootApplication
@Slf4j
public class OpenapiWebApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(OpenapiWebApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(OpenapiWebApplication.class, args);
log.warn(">o< 开放平台服务启动成功!温馨提示:代码千万行,注释第一行,命名不规范,同事泪两行 >o<");
}
}
- pom修改打包类型
<packaging>war</packaging>
- 打包插件配置
<build>
<!--自定义打包文件名-->
<finalName>openapi</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
<!--启动类路径-->
<mainClass>org.gourd.hu.OpenapiWebApplication</mainClass>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
- 用maven- package命令打包
部署
- docker-compose.yml准备,此处提供一下我的配置
version: '3'
services:
openapi-service:
image: tomcat:9.0.33
ports:
- "8089:8080"
restart: always
environment:
- TZ=Asia/Shanghai
- JAVA_OPTS=-Xmx256m -Xms256m
entrypoint:
- "catalina.sh"
- "run"
volumes:
- "./tomcat-web/webapps:/usr/local/tomcat/webapps"
- "./tomcat-web/logs:/usr/local/tomcat/logs"
container_name: openapi
-
将war包放到 /tomcat-web/webapps 下
-
运行到 docker-compose.yml目录下,执行命令
docker-compose up -d
测试
调用测试接口的时候需要加上项目名(包名),如果直接调用接口路径会报404。
其实就是加上tomcat启动后war包生成的文件夹名。
结语
docker-compose 部署war包就完成了,可以到logs目录下查看启动日志。如果本文有不对的地方,欢迎指正。最后奉上自己的开源项目,有兴趣的小伙伴可以下载看看。
cloud-plus:https://blog.csdn.net/HXNLYW/article/details/104635673