[英]How to deploy spring boot app project to Heroku
我创建了一个简单的服务器,它使用 JPA 存储库并在 Json 中返回响应。 它包括 post 和 get 方法。 这是一个 spring starter 启动应用程序项目,一切都在我的本地主机上运行(我使用邮递员发送和接收 json 对象)。 我的问题是当我尝试部署到 Heroku 时遇到了很多问题。 我添加了一个 jetty-runner 依赖项和插件。 我还创建了一个 procfile,如下所示:
web: java $JAVA_OPTS -jar target/dependency/jetty-runner.jar --port $PORT target/*.war
最初目标文件夹是空的, foreman start web
说它couldn't find my war file
,所以我在 pom.xml 中添加了以下行:
<packaging>war</packaging>
但是项目创建了一个错误,所以我禁用了项目的 maven 特性,然后再次配置了 maven,然后它在目标文件夹中包含了 pom.properties 和 pom.xml。 当我尝试部署它时,它说它无法访问目标/依赖项中的 jetty jar 文件,因为没有这样的文件夹。 所以我做了maven install
并安装了丢失的文件夹。 现在我收到错误No transaction manager can be found
,所以我安装了 jetty-plus 和 Atomikos 的依赖项。 但是现在我仍然收到没有找到事务管理器并且有一个 java.net.bindexception 的错误。
我觉得我真的走错了路。 我想知道是否有人可以从一开始就告诉我如何将 Spring Starter Boot 项目部署到 heroku。 任何帮助将不胜感激。
这是我的 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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.test</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>Challenge-Server1</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.2.5.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<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>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</dependency>
<dependency>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-runner</artifactId>
<version>7.4.5.v20110725</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jta-atomikos</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.3</version>
<executions>
<execution>
<phase>package</phase>
<goals><goal>copy</goal></goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-runner</artifactId>
<version>7.4.5.v20110725</version>
<destFileName>jetty-runner.jar</destFileName>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
我发现部署 spring boot 应用程序与部署 spring boot mvc 项目有点不同。 基本上您不需要 jetty-runner 依赖项或插件,您只需执行以下步骤:
全部来自本网站: http : //web.archive.org/web/20171018145733/http : //nicholaspaulsmith.com/spring-boot-on-heroku/
我在我的博客中概述了一些细节
https://exampledriven.wordpress.com/2016/11/04/spring-boot-heroku-example/
重点是像这样使用heroku maven插件
heroku plugins:install heroku-cli-deploy
mvn clean install
# Creates an app with the specified name, without setting up a git remote
heroku create <APP-NAME> --no-remote
#deploys the jar file
heroku deploy:jar target/demo-0.0.1-SNAPSHOT.jar --app <APP-NAME>
但还有更多细节,例如如何设置 CI/CD 管道
有多种方法可以在heroku上部署基于Spring Boot的应用程序。
您可以直接部署从基于Spring Boot的应用程序创建的jar文件。还可以将代码上传到heroku,然后触发构建。
使用Heroku Cli,我们可以执行以下方法
$ heroku deploy:jar target/SpringHeroku-0.0.1-SNAPSHOT.jar --app <APP-NAME>
使用Procfile方式进行部署:-
将文件检入到heroku存储库后,我们可以触发构建,但随后需要在我们的配置文件中包含一个proc文件。
请检查我找到的有关如何使用Procfile配置和部署Spring Boot的链接。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.