【问题标题】:How can I deploy a java web app to heroku?如何将 Java Web 应用程序部署到 Heroku?
【发布时间】:2019-07-24 01:42:21
【问题描述】:

我的 jar 文件中嵌入了 Tomcat 的 Java Web 应用程序。我可以使用 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 应用引擎,所以 Heroku 的所有这些工作都非常令人沮丧。

【问题讨论】:

    标签: java maven docker spring-mvc heroku


    【解决方案1】:

    我最终通过使用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 应用的指南。

    【讨论】:

      猜你喜欢
      • 2023-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-03
      • 2023-03-20
      • 2018-08-04
      • 2018-08-25
      • 1970-01-01
      相关资源
      最近更新 更多