加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

java – 将Spring WAR部署到基于Tomcat的docker

发布时间:2020-12-15 01:30:10 所属栏目:大数据 来源:网络整理
导读:我已经完成了Spring的Building a RESTful Web Service教程并创建了一个虚拟webapp(带有“Build with Maven”指令).我构建并打包WAR.然后我用这个命令运行它: java -jar ./target/Dummy-1.0-SNAPSHOT.war 我可以在http://localhost:8080/greeting/看到虚拟JS

我已经完成了Spring的Building a RESTful Web Service教程并创建了一个虚拟webapp(带有“Build with Maven”指令).我构建并打包WAR.然后我用这个命令运行它:

java -jar ./target/Dummy-1.0-SNAPSHOT.war

我可以在http://localhost:8080/greeting/看到虚拟JSON端点.

现在我想用Docker封装应用程序,这样我就可以进一步测试它而无需将Tomcat安装到系统空间.这是我创建的Dockerfile:

FROM tomcat:7-jre8-alpine

# copy the WAR bundle to tomcat
COPY /target/Dummy-1.0-SNAPSHOT.war /usr/local/tomcat/webapps/app.war

# command to run
CMD ["catalina.sh","run"]

我构建并运行docker绑定到http://localhost:8080.我可以在“http://localhost:8080”上看到Tomcat欢迎页面.但我也看不到我的应用程序:

> http://localhost:8080/app/
> http://localhost:8080/app/greeting/
> http://localhost:8080/greeting/

我该如何追查这个问题?可能是什么问题呢?

更新1:Tomcat管理界面截图

Tomcat Admin

最佳答案
the example中的Application.java文件如下所示:

package hello;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class,args);
    }
}

这是一个有效的SpringBoot应用程序,但不是Tomcat的可部署应用程序.要使其可部署,您可以:

> redefineApplication从Spring框架Web支持扩展SpringBootServletInitializer;然后
>覆盖configure方法:

package hello;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.support.SpringBootServletInitializer;    

@SpringBootApplication
public class Application extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(Application.class);
    }

    public static void main(String[] args) {
        SpringApplication.run(Application.class,args);
    }

}

无需更改pom.xml文件(或任何其他配置).

重建dockerfile并使用正确的端口绑定运行它后,问候示例端点将通过以下方式提供:http://localhost:8080/app/greeting/

参考

> Spring Boot War deployed to Tomcat
> Spring Boot Reference Guide: Create a deployable war file

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读