当前位置: 首页 > 知识库问答 >
问题:

如何将java web应用程序部署到Heroku?

仰翰采
2023-03-14

我有一个Java web应用程序,在我的jar文件中嵌入了Tomcat。我可以用Docker容器化应用程序,并用命令java-jar-myapp.jar运行它,但我不能在Heroku中运行那个容器。我尝试使用heroku CLI进行dockerize和部署,但heroku给了我一个“无法访问jarfile”的错误。

我试图通过使用heroku deploy:jar部署我的fat jar来解决这个问题,但这错误地给了我一个错误:

 heroku deploy:jar target/*.jar -a medscanner2
-----> Packaging application...
   - app: medscanner2
   - including: target/medscanner2.jar
   ! ERROR: Could not get API key! Please install the Heroku CLI and run 
   `heroku login` or set the HEROKU_API_KEY environment variable.
   ! Re-run with HEROKU_DEBUG=1 for more info.
   !There was a problem deploying to medscanner2.
   !Make sure you have permission to deploy by running: heroku apps:info -a 
    medscanner2

我被登录到Heroku,我可以使用Heroku auth:whoami来验证,我可以推动容器并部署它们,所以这个错误没有任何意义。我使用heroku_debug=1重新运行,但它没有返回任何更多信息。

我进一步尝试使用从Heroku获得的令牌在CLI中设置HEROKU_API_KEY变量,但当我尝试部署JAR时,这仍然会导致相同的错误。

我正在使用一个Procfile(尽管我不确定是否有必要):

web: java -Dserver.port=$PORT -jar target/medscanner2.jar

由于这个问题似乎表明访问存在问题,我不知道Procfile如何影响它。

对我来说,部署一个不使用Spring Boot的Java web应用程序到Heroku的最佳方法是什么?我已经将docker容器成功地部署到了Google app engine中,所以Heroku的所有这些工作都是非常令人沮丧的。

共有1个答案

艾成益
2023-03-14

我最终通过使用webapp-runner部署我的应用程序来解决这个问题。它运行webapp-runner jar,该jar可以运行您的.war文件。这需要添加heroku-maven-plugin和maven-dependency-plugin。

然后,我可以添加procfile:web:java-jar target/dependency/webapp-runner.jar target/*.war--port$port

并使用Heroku CLI使用Git添加应用程序。webapp-runner的链接是使用webapp-runner部署tomcat java应用程序的指南。

 类似资料:
  • 我有一个在web容器tomcat上运行的java web应用程序。该web应用程序使用hibernate框架连接到DB,我需要将其从IntelliJ 14.0.2部署到heruko。所以我添加了maven框架,这就是pom。xml: 当设置maven的编辑配置并运行它时,我得到一条消息:[错误]在当前项目和插件组[org.apache.maven.plugins,org.codehaus.mojo

  • 我想第一次使用docker发布我在spring boot中制作的应用程序。然而,在发布时出现了一个问题。 因此,我上传到conter的图像不显示。 以下是我采取的步骤,我将立即添加我使用gradle的步骤。 > 我将Docker插件下载到IntelliJ 我创建了一个Dockerfile,其中我放了: 音量 /tmp ARG JAR_文件 在终端中,我键入以下命令来构建项目: chmod 777

  • 问题内容: 我正在尝试在Heroku上使用Flask开发我的第一个“大型”应用程序,并尝试将此处的基本教程与以下说明结合:https : //devcenter.heroku.com/articles/python与以下说明:http:// flask.pocoo.org/docs/patterns/packages/#larger- applications。它在本地与“先行启动”一起工作,但是

  • 我有带pom的spring boot应用程序。xml 所以,我需要构建war并将其部署到websphere上。但部署后,会出现错误消息: 脚本计数=1048576 ************* 结束显示当前环境 ************* [9/20/18 18:35:17:893 MSK] 00000089 ecs Wcom.ibm.ws.ecs.internal.scan.context.imp

  • 我正试图将一个。NET5项目部署到google app engine上,但当我想用。NET5运行时构建时,它似乎有一个问题。