63.5 Boxfuse和亚马逊网络服务
Boxfuse的工作原理是将您的Spring Boot可执行jar或war转换为可以在VirtualBox或AWS上无需部署的最小VM映像。Boxfuse为Spring Boot
提供深度集成,并使用Spring Boot配置文件中的信息自动配置端口和运行状况检查URL。Boxfuse利用这些信息来处理它产生的图像以及它提供
的所有资源(实例,安全组,弹性负载平衡器等)。
创建Boxfuse帐户后,将其连接到您的AWS账户,安装最新版本的Boxfuse客户端,并确保该应用程序是由Maven或Gradle构建的(例如,使
用 mvn clean package ),您可以使用类似于以下内容的命令将您的Spring Boot应用程序部署到AWS:
$ boxfuse run myapp-1.0.jar -env=prod
有关更多选项,请参阅 boxfuse run 文档。如果 boxfuse.conf 当前目录中存在文件,则会考虑该文件。
默认情况下,Boxfuse在启动时激活名为 boxfuse 的Spring个人资料。如果您的可执行jar或war包含一个
application-boxfuse.properties 文件,Boxfuse将其配置基于它包含的属性。
此时, boxfuse 为您的应用程序创建一个映像,上传它,并在AWS上配置和启动必要的资源,从而产生类似于以下示例的输出:
Fusing Image for myapp-1.0.jar ...
Image fused in 00:06.838s (53937 K) -> axelfontaine/myapp:1.0
Creating axelfontaine/myapp ...
Pushing axelfontaine/myapp:1.0 ...
Verifying axelfontaine/myapp:1.0 ...
Creating Elastic IP ...
Mapping myapp-axelfontaine.boxfuse.io to 52.28.233.167 ...
Waiting for AWS to create an AMI for axelfontaine/myapp:1.0 in eu-central-1 (this may take up to 50 seconds) ...
AMI created in 00:23.557s -> ami-d23f38cf
Creating security group boxfuse-sg_axelfontaine/myapp:1.0 ...
Launching t2.micro instance of axelfontaine/myapp:1.0 (ami-d23f38cf) in eu-central-1 ...
Instance launched in 00:30.306s -> i-92ef9f53
Waiting for AWS to boot Instance i-92ef9f53 and Payload to start at http://52.28.235.61/ ...
Payload started in 00:29.266s -> http://52.28.235.61/
Remapping Elastic IP 52.28.233.167 to i-92ef9f53 ...
Waiting 15s for AWS to complete Elastic IP Zero Downtime transition ...
Deployment completed successfully. axelfontaine/myapp:1.0 is up and running at http://myapp-axelfontaine.boxfuse.io/
您的应用程序现在应该在AWS上启动并运行。
请参阅有关在EC2上部署Spring Boot应用程序的博客文章以及Boxfuse Spring启动集成的 文档,以开始使用Maven构建来运行应用程序。
63.6 Google Cloud
Google Cloud有几个选项可用于启动Spring Boot应用程序。最容易上手的可能是App Engine,但您也可以找到在带有Container Engine的容
器中运行Spring Boot或在带有Compute Engine的虚拟机上运行的方法。
要在App Engine中运行,您可以首先在UI中创建项目,该项目为您设置唯一标识符并设置HTTP路由。将Java应用程序添加到项目中并将其留
空,然后使用Google Cloud SDK将Spring Boot应用程序从命令行或CI构建推送到该插槽。
App Engine Standard要求您使用WAR包装。按照 以下步骤 将App Engine Standard应用程序部署到Google Cloud。
或者,App Engine Flex要求您创建一个 app.yaml 文件来描述您的应用所需的资源。通常,您将此文件放在 src/main/appengine 中,它应该
类似于以下文件:
service: default
runtime: java
env: flex
runtime_config:
jdk: openjdk8
handlers:
- url: /.*
script: this field is required, but ignored
manual_scaling:
instances: 1
health_check:
enable_health_check: False
env_variables:
ENCRYPT_KEY: your_encryption_key_here
您可以通过将项目ID添加到构建配置来部署应用程序(例如,使用Maven插件),如以下示例所示:
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>appengine-maven-plugin</artifactId>
<version>1.3.0</version>
<configuration>
<project>myproject</project>
</configuration>
</plugin>
然后使用 mvn appengine:deploy 进行部署(如果需要先进行身份验证,则构建失败)。