spring_reference/VI. Deploying to the cloud/49. Cloud Foundry.md

55 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

### 部署到云端
对于大多数流行云PaaS平台即服务提供商Spring Boot的可执行jars就是为它们准备的。这些提供商往往要求你带上自己的容器它们管理应用的进程不特别针对Java应用程序所以它们需要一些中间层来将你的应用适配到云概念中的一个运行进程。
两个流行的云提供商Heroku和Cloud Foundry采取一个打包'buildpack'方法。为了启动你的应用程序不管需要什么buildpack都会将它们打包到你的部署代码它可能是一个JDK和一个java调用也可能是一个内嵌的webserver或者是一个成熟的应用服务器。buildpack是可插拔的但你最好尽可能少的对它进行自定义设置。这可以减少不受你控制的功能范围最小化部署和生产环境的发散。
理想情况下你的应用就像一个Spring Boot可执行jar所有运行需要的东西都打包到它内部。
### 49. Cloud Foundry
如果不指定其他打包方式Cloud Foundry会启用它提供的默认打包方式。Cloud Foundry的[Java buildpack](https://github.com/cloudfoundry/java-buildpack)对Spring应用有出色的支持包括Spring Boot。你可以部署独立的可执行jar应用也可以部署传统的.war形式的应用。
一旦你构建了应用(比如,使用`mvn clean package`)并[安装](http://docs.cloudfoundry.org/devguide/installcf/install-go-cli.html)了cf[命令行工具](http://docs.cloudfoundry.org/devguide/installcf/install-go-cli.html),你可以使用下面的`cf push`命令(将路径指向你编译后的.jar来部署应用。在发布一个应用前确保你已登陆cf命令行客户端。
```shell
$ cf push acloudyspringtime -p target/demo-0.0.1-SNAPSHOT.jar
```
查看`cf push`[文档](http://docs.cloudfoundry.org/devguide/installcf/whats-new-v6.html#push)获取更多可选项。如果相同目录下存在[manifest.yml](http://docs.cloudfoundry.org/devguide/deploy-apps/manifest.html)Cloud Foundry会使用它。
就此cf开始上传你的应用
```java
Uploading acloudyspringtime... OK
Preparing to start acloudyspringtime... OK
-----> Downloaded app package (8.9M)
-----> Java Buildpack source: system
-----> Downloading Open JDK 1.7.0_51 from .../x86_64/openjdk-1.7.0_51.tar.gz (1.8s)
Expanding Open JDK to .java-buildpack/open_jdk (1.2s)
-----> Downloading Spring Auto Reconfiguration from 0.8.7 .../auto-reconfiguration-0.8.7.jar (0.1s)
-----> Uploading droplet (44M)
Checking status of app 'acloudyspringtime'...
0 of 1 instances running (1 starting)
...
0 of 1 instances running (1 down)
...
0 of 1 instances running (1 starting)
...
1 of 1 instances running (1 running)
App started
```
恭喜!应用现在处于运行状态!
检验部署应用的状态是很简单的:
```shell
$ 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此处是[acloudyspringtime.cfapps.io/](http://acloudyspringtime.cfapps.io/)。