gpt4 book ai didi

java - 如何将 Java Web 应用程序部署到 Heroku?

转载 作者:行者123 更新时间:2023-11-30 01:54:27 24 4
gpt4 key购买 nike

我的 jar 文件中嵌入了一个 Java Web 应用程序,其中嵌入了 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 获得的 token 在 CLI 中设置 HEROKU_API_KEY 变量,当我尝试部署 jar 时,这仍然导致相同的错误。

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

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

由于该问题似乎表明存在访问问题,因此我不知道 Procfile 会如何影响它。

将不使用 Spring Boot 的 Java Web 应用程序部署到 Heroku 的最佳方法是什么?我已经成功地将 docker 容器单独部署到 Google 应用引擎,因此 Heroku 的所有这些工作非常令人沮丧。

最佳答案

我最终使用 webapp-runner 解决了这个问题部署我的应用程序。它运行 webapp-runner 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 应用程序的指南。

关于java - 如何将 Java Web 应用程序部署到 Heroku?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54954536/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com