微服务架构之Spring Boot(八十四)

2022-05-23 15:47:21 浏览数 (1)

63.2 Heroku

Heroku是另一个流行的PaaS平台。要自定义Heroku构建,请提供 Procfile ,它提供部署应用程序所需的咒语。Heroku为要使用的Java应用

程序分配 port ,然后确保路由到外部URI工作。

您必须将应用程序配置为侦听正确的端口。以下示例显示了我们的入门REST应用程序的 Procfile :

web: java -Dserver.port=$PORT -jar target/demo-0.0.1-SNAPSHOT.jar

Spring Boot使 -D 个参数可用作可从Spring Environment 实例访问的属性。server.port 配置属性被馈送到嵌入式Tomcat,Jetty或

Undertow实例,然后在启动时使用该端口。$PORT 环境变量由Heroku PaaS分配给我们。

这应该是你需要的一切。Heroku部署最常见的部署工作流程是 git push 生产代码,如以下示例所示:

$ git push heroku master

Initializing repository, done.

Counting objects: 95, done.

Delta compression using up to 8 threads.

Compressing objects: 100% (78/78), done.

Writing objects: 100% (95/95), 8.66 MiB | 606.00 KiB/s, done.

Total 95 (delta 31), reused 0 (delta 0)

-----> Java app detected

-----> Installing OpenJDK 1.8... done

-----> Installing Maven 3.3.1... done

-----> Installing settings.xml... done

-----> Executing: mvn -B -DskipTests=true clean install

[INFO] Scanning for projects...

Downloading: https://repo.spring.io/...

Downloaded: https://repo.spring.io/... (818 B at 1.8 KB/sec)

....

Downloaded: http://s3pository.heroku.com/jvm/... (152 KB at 595.3 KB/sec)

[INFO] Installing /tmp/build_0c35a5d2-a067-4abc-a232-14b1fb7a8229/target/...

[INFO] Installing /tmp/build_0c35a5d2-a067-4abc-a232-14b1fb7a8229/pom.xml ...

[INFO] ------------------------------------------------------------------------

[INFO] BUILD SUCCESS

[INFO] ------------------------------------------------------------------------

[INFO] Total time: 59.358s

[INFO] Finished at: Fri Mar 07 07:28:25 UTC 2014

[INFO] Final Memory: 20M/493M

[INFO] ------------------------------------------------------------------------

-----> Discovering process types

Procfile declares types -> web

-----> Compressing... done, 70.4MB

-----> Launching... done, v6

http://agile-sierra-1405.herokuapp.com/ deployed to Heroku

To git@heroku.com:agile-sierra-1405.git

* [new branch] master -> master

您的应用程序现在应该在Heroku上启动并运行。

63.3 OpenShift

OpenShift是Kubernetes容器编排平台的Red Hat公共(和企业)扩展。与Kubernetes类似,OpenShift有许多选项可用于安装基于Spring

Boot的应用程序。

OpenShift有许多资源描述如何部署Spring Boot应用程序,包括:

使用S2I构建器

建筑指南

在Wildfly上作为传统Web应用程序运行

OpenShift Commons简报

63.4亚马逊网络服务(AWS)

Amazon Web Services提供了多种方法来安装基于Spring Boot的应用程序,可以是传统的Web应用程序(war),也可以是带有嵌入式Web

服务器的可执行jar文件。选项包括:

AWS Elastic Beanstalk

AWS Code Deploy

AWS OPS Works

AWS Cloud Formation

AWS容器注册表

每个都有不同的功能和定价模型。在本文档中,我们仅描述了最简单的选项:AWS Elastic Beanstalk。

63.4.1 AWS Elastic Beanstalk

正如官方的 Elastic Beanstalk Java指南中所述,部署Java应用程序有两个主要选项。您可以使用“Tomcat平台”或“Java SE平台”。

使用Tomcat平台

此选项适用于生成war文件的Spring Boot项目。无需特殊配置。您只需遵循官方指南即可。

使用Java SE平台

此选项适用于生成jar文件并运行嵌入式Web容器的Spring Boot项目。Elastic Beanstalk环境在端口80上运行nginx实例以代理在端口5000上运

行的实际应用程序。要配置它,请将以下行添加到 application.properties 文件中:

server.port=5000

默认情况下,Elastic Beanstalk上传源并在AWS中编译它们。但是,最好上传二进制文件。为此,请

在 .elasticbeanstalk/config.yml 文件中添加与以下内容类似的行:

deploy:

artifact: target/demo-0.0.1-SNAPSHOT.jar

默认情况下,Elastic Beanstalk环境是负载平衡的。负载平衡器具有显着的成本。要避免此成本,请将环境类型设置为“Single

instance”,如 Amazon文档中所述。您还可以使用CLI和以下命令创建单实例环境:

eb create -s

63.4.2摘要

这是访问AWS的最简单方法之一,但还有更多内容需要涉及,例如如何将Elastic Beanstalk集成到任何CI / CD工具中,使用Elastic Beanstalk

Maven插件代替CLI和其他人。有一篇 博文更详细地介绍了这些主题。

0 人点赞