博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring Boot 参考指南(部署到云)
阅读量:6228 次
发布时间:2019-06-21

本文共 3529 字,大约阅读时间需要 11 分钟。

第VI章. 部署 Spring Boot 应用程序

Spring Boot的灵活打包选项在部署应用程序时提供了大量的选择,你可以将Spring Boot应用程序部署到各种云平台、容器映像(例如Docker)或虚拟/真实机器上。

本节介绍一些更常见的部署场景。

60. 部署到云

Spring Boot的可执行jar是为大多数流行的云PaaS(Platform-as-a-Service)提供者准备的,这些供应商倾向于要求你“自带容器”,它们管理应用程序进程(不是专门的Java应用程序),因此,他们需要一个中间层,使你的应用程序适应云的运行进程理念。

两家受欢迎的云服务提供商Heroku和cloud Foundry采用了“buildpack”的方法,“buildpack”将你部署的代码封装到任何需要启动应用程序的地方,它可能是一个JDK和一个对java的调用,一个嵌入式web服务器,或者一个成熟的应用服务器。buildpack是可插拔的,但理想情况下,你应该能够通过尽可能少的自定义来获取它,这将减少不受你控制的功能的占用,它将开发和生产环境之间的差异最小化。

理想情况下,你的应用程序,就像Spring Boot的可执行jar,拥有它需要在其中运行的所有东西。

在本节中,我们将讨论如何获得在开始章节,并在云中运行。

60.1 Cloud Foundry

如果没有指定其他的buildpack, Cloud Foundry提供了默认的buildpack,Cloud Foundry的对Spring应用程序(包括Spring Boot)有很好的支持,你可以部署独立的可执行的jar应用程序和传统的.war打包应用程序。

一旦你构建了应用程序(例如,通过使用mvn clean package)并安装了,就可以使用cf push命令部署应用程序,将路径替换为已编译的.jar。在推送应用程序之前,确定已经。下面的行显示使用cf push命令来部署应用程序:

$ cf push acloudyspringtime -p target/demo-0.0.1-SNAPSHOT.jar
在前面的示例中,我们将
acloudyspringtime替换为您提供的
cf作为应用程序名称的任何值。

更多选项见,如果一个Cloud Foundry的文件存在同一目录,它将被认可。

此时,cf开始上传你的应用程序,产生类似以下示例的输出:

Uploading acloudyspringtime... OKPreparing to start acloudyspringtime... OK-----> Downloaded app package (8.9M)-----> Java Buildpack Version: v3.12 (offline) | https://github.com/cloudfoundry/java-buildpack.git#6f25b7e-----> Downloading Open Jdk JRE 1.8.0_121 from https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-1.8.0_121.tar.gz (found in cache)       Expanding Open Jdk JRE to .java-buildpack/open_jdk_jre (1.6s)-----> Downloading Open JDK Like Memory Calculator 2.0.2_RELEASE from https://java-buildpack.cloudfoundry.org/memory-calculator/trusty/x86_64/memory-calculator-2.0.2_RELEASE.tar.gz (found in cache)       Memory Settings: -Xss349K -Xmx681574K -XX:MaxMetaspaceSize=104857K -Xms681574K -XX:MetaspaceSize=104857K-----> Downloading Container Certificate Trust Store 1.0.0_RELEASE from https://java-buildpack.cloudfoundry.org/container-certificate-trust-store/container-certificate-trust-store-1.0.0_RELEASE.jar (found in cache)       Adding certificates to .java-buildpack/container_certificate_trust_store/truststore.jks        (0.6s)-----> Downloading Spring Auto Reconfiguration 1.10.0_RELEASE from https://java-buildpack.cloudfoundry.org/auto-reconfiguration/auto-reconfiguration-1.10.0_RELEASE.jar (found in cache)Checking status of app 'acloudyspringtime'...  0 of 1 instances running (1 starting)  ...  0 of 1 instances running (1 starting)  ...  0 of 1 instances running (1 starting)  ...  1 of 1 instances running (1 running)App started

恭喜你!应用程序现在是存活的!

一旦你的应用程序被激活,你可以使用cf apps命令来验证已部署应用程序的状态,如下面的示例所示:

$ cf appsGetting applications in ...OKname                 requested state   instances   memory   disk   urls...acloudyspringtime    started           1/1         512M     1G     acloudyspringtime.cfapps.io...

一旦Cloud Foundry承认你的应用程序已被部署,你应该能够在给定的URI中找到应用程序,在前面的示例中,你可以在http://acloudyspringtime.cfapps.io/中找到它。

60.1.1 绑定到服务

默认情况下,关于正在运行的应用程序和服务连接信息的元数据将被作为环境变量公开(例如:$VCAP_SERVICES),这个架构的决定是由于Cloud Foundry的多种语言性质(任何语言和平台都可以作为一个buildpack来支持),进程范围的环境变量是语言无关的。

环境变量并不总是适合最简单的API,因此,Spring Boot会自动提取它们并将数据压缩到可以通过Spring的Environment抽象访问的属性中,如下面的示例所示:

@Componentclass MyBean implements EnvironmentAware {    private String instanceId;   @Override   public void setEnvironment(Environment environment) {      this.instanceId = environment.getProperty("vcap.application.instance_id");   }   // ...}

所有的Cloud Foundry属性都以vcap为前缀,可以使用vcap属性访问应用程序信息(例如应用程序的公共URL)和服务信息(如数据库证书),有关详细信息,请参阅Javadoc。

项目更适合于配置数据源等任务,Spring Boot包括自动配置支持和
spring-boot-starter-cloud-connectors启动器。

60.2 Heroku

转载地址:http://ksxna.baihongyu.com/

你可能感兴趣的文章
Log4Net 日志配置[附带源码]
查看>>
企业级Nginx Web服务优化实战
查看>>
Google地图,Baidu地图数据供应商
查看>>
抽象类
查看>>
node溢出
查看>>
【转】充满浮躁的程序员
查看>>
jquery tips 提示层
查看>>
Python 之IO模型
查看>>
SSH项目tomcat发布时,Initializing Spring root WebApplicationContext卡死不动
查看>>
Lombok
查看>>
Single Number II
查看>>
由于一个老熟人对架构的一句话而拉黑了他。
查看>>
Mysql第八天 分区与分表
查看>>
CF 558A(Lala Land and Apple Trees-暴力)
查看>>
关于继承Fragment后重写构造方法而产生的错误
查看>>
2017-5-7 账号激活 权限设置 销售 仓库 财务三大模块
查看>>
datepicker插件的使用
查看>>
用户定义的变量+HTTP Cookie 管理器组合实现接口关联+问题处理
查看>>
linux中查找文件中的内容
查看>>
【C#学习笔记】调用C++生成的DLL
查看>>