docker 环境中在tomcat容器中部署spring boot项目

这两天在tomcat容器中搭建springboot项目,好多次都是tomcat跑起来了,但是项目没有跑起来,查询了很多资料,记录下自己遇上的坑。

1、tomcat容器构建并跑起来后,登录tomcat的首页显示404,说明tomcat确实跑起来了,但是找不到index首页资源,因此需要进入容器,将tomcat目录下的webapps.list里面的内容复制到webapps目录下:cp -r webapps.list/* webapps/。这样再访问8080端口即可访问到tomcat的首页。

2、tomcat跑起来后,无法访问项目中的资源

在项目里面可以构建一个controller专门用于测试的,放在tomcat测试项目是否正常的跑起来了。在运行的tomcat中无法访问项目中的资源,很大的一个可能就是项目本身存在问题,没有正常的启动。这里有几个需要注意的问题:

(1)首先就是项目打包方式,是war而不是jar。

(2)在pom.xml文件中,spring-boot-starter-web依赖节点中要移除spring-boot-starter-tomcat依赖节点,需要重新用一个新的依赖专门依赖tomcat  

如:

        
            org.springframework.boot
            spring-boot-starter-tomcat
            provided
            

(3)在部分里需要设置项目打包的名字,即添加projectName

(4)修改启动类的启动方式,继承SpringBootServletInitializer类,重写configure方法,如:

@Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(SpringBootTest.class);
    }

(5)将war包复制到tomcat下的webapps目录下即可访问。

(6)另外有一个点可能会被忽视,就是springboot项目可能会依赖其他的组件,如MySQL,Redis等,因此项目在启动之前需要将相关的配置完毕,如果没有,项目在tomcat就会启动失败,因此也就访问不了项目里的资源。

你可能感兴趣的:(docker)