资讯专栏INFORMATION COLUMN

Spring Boot 参考指南(部署到云)

learning / 1765人阅读

摘要:第章部署应用程序的灵活打包选项在部署应用程序时提供了大量的选择,你可以将应用程序部署到各种云平台容器映像例如或虚拟真实机器上。本节介绍一些更常见的部署场景。

第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的Java buildpack对Spring应用程序(包括Spring Boot)有很好的支持,你可以部署独立的可执行的jar应用程序和传统的.war打包应用程序。

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

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

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

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

Uploading acloudyspringtime... OK
Preparing 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 apps
Getting applications in ...
OK

name                 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抽象访问的属性中,如下面的示例所示:

@Component
class 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)和服务信息(如数据库证书),有关详细信息,请参阅“CloudFoundryVcapEnvironmentPostProcessor”Javadoc。

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/71183.html

相关文章

  • Spring Boot 参考指南(目录)

    摘要:参考指南使你可以轻松地创建可运行的独立的生产级的基于的应用程序,我们对平台和第三方库有自己的看法,这样你就可以以最低限度工作开始了,大多数应用程序都需要很少的配置。文档本节简要概述了参考文档,它充当文档其余部分的映射。 Spring Boot 参考指南 Spring Boot使你可以轻松地创建可运行的独立的、生产级的基于Spring的应用程序,我们对Spring平台和第三方库有自己的看...

    awesome23 评论0 收藏0
  • Spring Boot 参考指南Spring Boot文档)

    摘要:关于文档参考指南可用如下方式最新的副本可以在中找到。尝试操作文档,它们为最常见的问题提供解决方案。学习基础,构建在许多其他项目上,网站提供丰富的参考文档,如果你要从开始,尝试其中一个指南。我们对进行监视,以解决带有标记的问题。 1. 关于文档 Spring Boot 参考指南可用如下方式: HTML PDF EPUB 最新的副本可以在 docs.spring.io/spring-b...

    zhjx922 评论0 收藏0
  • Spring Boot 参考指南Spring Boot介绍)

    摘要:我们的主要目标是为所有开发提供一个非常快的广泛可访问的入门体验。要跳出固有的思维模式,但是当需求开始偏离默认设置时,要迅速避开。提供大型项目如嵌入式服务器安全性指标健康检查和外部化配置所共有的一系列非功能特性。系统要求需要或和或以上。 8. Spring Boot介绍 Spring Boot使你可以轻松地创建可运行的独立的、生产级的基于Spring的应用程序,我们对Spring平台和第...

    GraphQuery 评论0 收藏0
  • Spring Boot 参考指南(使用JTA分布式事务)

    摘要:使用事务管理器是支持的一个流行的开源事务管理器实现,你可以使用启动器向项目添加适当的依赖项,与和一样,将自动配置并对进行后处理,以确保启动和关闭顺序是正确的。 37. 用JTA分布式事务 通过使用Atomikos或Bitronix嵌入式事务管理器,Spring Boot支持跨多个XA资源的分布式JTA事务,在部署到合适的Java EE应用服务器时也支持JTA事务。 当检测到JTA环境时...

    silenceboy 评论0 收藏0
  • [译]Spring入门 - Web应用程序安全

    摘要:一旦最基本的应用创建好了,你可以给他加上安全防护。一旦成功登出了,我们的应用程序重定向到到并显示相应的登陆成功的消息。这标记该应用程序是一个应用程序,并激活一些关键行为,比如创建一个。一旦应用程序启动,用浏览器访问。 原网页 https://spring.io/guides/gs/securing-web/ 本指南将引导您完成创建一个资源由Spring Security的保护的一个简单...

    AlexTuan 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<