详解Spring Boot 项目部署到heroku爬坑

 更新时间:2018年08月12日 15:19:47   作者:吐吐吐吐吐葡萄皮  
这篇文章主要介绍了详解Spring Boot 项目部署到heroku爬坑,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

​ 背景:最近小组进行一个环境比较恶劣的项目,由于没有真实的测试环境,决定上云,最终选择国外的heroku,折腾半天,其中有一些坑在这里记录下来,方便网友及个人。

1.账号注册

​ heroku官网: https://www.heroku.com

​ heroku免费注册账号,heroku提供的功能已经可以满足大部分个人需求,有特殊需求的用户就需要进行付费了,比如heroku的数据库的免费空间只有5M,且项目在30分钟内无人访问就会休眠,下面是heroku对于休眠的说明:

By default, your app is deployed on a free dyno. Free dynos will sleep after a half hour of inactivity (if they don’t receive any traffic). This causes a delay of a few seconds for the first request upon waking. Subsequent requests will perform normally. Free dynos also consume from a monthly, account-level quota of free dyno hours - as long as the quota is not exhausted, all free apps can continue to run.To avoid dyno sleeping, you can upgrade to a hobby or professional dyno type as described in the Dyno Types article. For example, if you migrate your app to a professional dyno, you can easily scale it by running a command telling Heroku to execute a specific number of dynos, each running your web process type.

​ heroku的注册界面:

PS:

  • heroku貌似不接受中国有限注册(Country可以选择中国区域),个人使用Gmail注册

 2.安装CLI

​ 简单注册完账号以后在官网登陆个人账号,点击Getting Started,选择一样自己需要的语言,然后选择合适自己系统的版本,下载安装CLI,本人为MAC系统。

3.heroku基本操作

​ 官网给了比较详细的操作说明,这里就不一一赘述,大家可以跟着官方教程一步一步操作,这里只说一下个人实践过程中遇到的问题,附送一些官网教程的截图。

 详细教程请参见heroku官网

4.遇到的问题

​ 上传项目到heroku时,一般系统会自动帮你打包并运行你的项目,这里我遇到两个问题:

git的个人分支无法上传

项目无法启动

下面是解决方法:

1.git个人分支无法上传

​ 官网上上传项目给了一条指令:

$ git push heroku master

​ 然后会得到这样一个运行日志:

Initializing repository, done.
Counting objects: 110, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (87/87), done.
Writing objects: 100% (110/110), 212.71 KiB | 0 bytes/s, done.
Total 110 (delta 30), reused 0 (delta 0)

-----> Java app detected
-----> Installing OpenJDK 1.8... done
-----> Installing Maven 3.3.3... done
-----> Executing: mvn -B -DskipTests=true clean install
    [INFO] Scanning for projects...
...
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 11.417s
    [INFO] Finished at: Thu Sep 11 17:16:38 UTC 2014
    [INFO] Final Memory: 21M/649M
    [INFO] ------------------------------------------------------------------------
-----> Discovering process types
    Procfile declares types -> web

但是实际项目中,我是在自己的分支上开发,然后我用git上传自己的分支:

$ git push heroku XXX

​ 运行结果

Total 0 (delta 0), reused 0 (delta 0)
remote: Pushed to non-master branch, skipping build.
To https://git.heroku.com/certberus.git
f2c01f2..40aa59d xxx -> xxx

这样显然是不对的,最后发现上传分支需要这样输入:

$ git push heroku XXX:master

这样你的分支修改的内容就会合并到mater上进行上传,然后运行了。

2.项目无法启动

​ 通常maven项目在打包时,会被打成war包或者jar包,熟悉Spring boot的童鞋应该了解Spring boot的运行命令,其实heroku运行项目也非常简单。

​ 首先说一下正常的一个文件的Spring boot部署到heroku,需要在根目录添加一个Procfile文件,告诉heroku你要打包哪个文件,文件内容如下:

web java -Dserver.port=$PORT $JAVA_OPTS -jar target/*.jar

但是本人的项目为多个子项目打包,启动类在子项目中,这样如何来让heroku启动呢,自己不停的修改Procfile中的文件路径仍然不起作用,后来发现heroku中有一个很爽的命令,如下:

$ heroku run bash

​ 这样就相当于远程登录一台Linux服务器啦,我们可以使用Linux命令查看自己部署在heroku上的项目的目录结构啦,找到需要运行的jar包,将其在云端的路径修改到Procfile文件中,再次上传项目,就会发现项目跑起来了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • java注解的全面分析

    java注解的全面分析

    这篇文章主要介绍了java注解的全面分析的相关资料,Java提供的一种原程序中的元素关联任何信息和任何元数据的途径和方法,需要的朋友可以参考下
    2017-08-08
  • Java中static关键字的作用解析

    Java中static关键字的作用解析

    这篇文章主要介绍了Java中static关键字的作用解析,Java 中,不能在所有类之外定义全局变量,只能通过在一个类中定义公用、静态的变量来实现一个全局变量,需要的朋友可以参考下
    2023-11-11
  • Java读文件修改默认换行符的实现

    Java读文件修改默认换行符的实现

    这篇文章主要介绍了Java读文件修改默认换行符的实现方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • JDK1.8中ConcurrentHashMap中computeIfAbsent死循环bug问题

    JDK1.8中ConcurrentHashMap中computeIfAbsent死循环bug问题

    这篇文章主要介绍了JDK1.8中ConcurrentHashMap中computeIfAbsent死循环bug,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • 浅析Java Web错误/异常处理页面

    浅析Java Web错误/异常处理页面

    这篇文章主要和大家一起对Java Web错误/异常处理页面进行分析研究,感兴趣的小伙伴们可以参考一下
    2016-03-03
  • 一文详解Reactor模型与实现示例

    一文详解Reactor模型与实现示例

    这篇文章主要为大家介绍了Reactor模型与实现示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • MyBatis一次执行多条SQL语句的操作

    MyBatis一次执行多条SQL语句的操作

    这篇文章主要介绍了MyBatis一次执行多条SQL语句的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • Gateway实现限流的一些常见方式

    Gateway实现限流的一些常见方式

    文章介绍了如何在SpringCloudGateway中实现限流,包括基于请求次数、令牌桶算法、IP地址和时间窗口等多种限流策略,通过配置RequestRateLimiter过滤器和KeyResolver,可以灵活地控制不同来源的请求频率,确保系统稳定性和可用性,感兴趣的朋友一起看看吧
    2025-02-02
  • 如何关闭 IDEA 自动更新

    如何关闭 IDEA 自动更新

    这篇文章主要介绍了如何关闭 IDEA 自动更新,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • 解决springboot中@DynamicUpdate注解无效的问题

    解决springboot中@DynamicUpdate注解无效的问题

    这篇文章主要介绍了解决springboot中@DynamicUpdate注解无效的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07

最新评论