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和其他人。有一篇 博文更详细地介绍了这些主题。