CloudFoundryへSpring BootアプリケーションをPush

CloudFoundryへアプリケーションをPushする方法に関して簡単に書きたいと思います。
利用する環境はPivotal Cloud Foundryになります。
自分で試したい場合は、下記のサイトでアカウント作成して、OGとSPACEを作成してください。
Pivotal Account
OGとSPACEの簡単な説明は下記に書いておきます。
ORG
個人または複数の開発者が共通で利用するものです。
例えば、組織の単位でORGを作った場合は、その組織に所属している人達は、それにアクセスでき、
リソース、アプリケーション、サービスの可用性、カスタムドメインなどが共有されます。
SPACE
すべてのアプリケーションやサービスは、ある一定のスコープに置かれます。
例えば、組織の単位でORGを作った場合は、少なくとも1つのスペースが必要です。
スペースは、ユーザーにアプリケーションの開発、展開、保守のための共有場所へのアクセスを提供します。
各スペースの役割は、特定のスペースにのみ適用されます。

ORG,SPACE以外にもいろいろあるんですが、詳しい内容は下のリンクを参照するのがいいと思います。
Orgs, Spaces, Roles, and Permissions | Pivotal Docs

Cloud Foundryは基本的にはCloudFoundry CLというコマンドラインベースで操作されます。
f:id:chronos_snow:20161123225054j:plain

簡単な説明は終わりにして、
今回は、Spring BootのRestのアプリケーションをデプロイしてみようと思います。

Javaをインストール

下記のサイトからJavaをダウンロードします。
Java SE - Downloads | Oracle Technology Network | Oracle
Mac用のものを選択してダウンロードしてインストールします。

Gradleをインストール

下記のサイトからGradleをダウンロードします。
Gradle Distributions
ダウンロードしたら下記の要領でインストールします。

mkdir project
cd project
unzip gradle-3.2-bin.zip
mv gradle-3.2-bin gradle

環境変数の設定

ZSHの設定ファイルにパスを通します。

vi .zshrc
export GRADLE_HOME=${HOME}/project/gradle
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home
export PATH=${PATH}:${JAVA_HOME}/bin:${GRADLE_HOME}/bin

MacにHomebrewをインストール

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

CloudFoundry CLIインストール

CloudFoundryを操作する為にはCloudFoundry CLIが必要になります。
アプリケーションをデプロイしたり、アプリケーションの状態を確認するなど
このCloudFoundry CLIで全て行うことができます。

brew tap cloudfoundry/tap
brew install cf-cli
brew update && brew upgrade cf-cli

CloudFoundryへログイン

CloudFoundry CLIのインストールが完了したらログインできるか確認します。

cf login 
API エンドポイント: https://api.example
Email> <アカウントID>
Password> <パスワード>
認証中です...
OK

CloudFoundryへアプリケーションをPUSH

サンプルのRestサービスアプリケーションとして下記のものを利用します。
github.com
アプリケーションはGradleプロジェクトベースになっています。
また、CloudFoundryへPUSHする為の設定として下記のmanifest.ymlで設定を定義しています。

applications:
- name: cf_sample_service
  memory: 512M
  instances: 1
  path: build/libs/cf_sample_service-1.0.0.jar
  buildpack: https://github.com/cloudfoundry/java-buildpack.git
  stack: cflinuxfs2

CloudFoundryへアプリケーションをPUSHする場合は下記のようにすればPUSHできます。

git clone https://github.com/chronossnow/cf_sample_service
cd cf_sample_service
./gradlew build
cf target -o <ORG> -s <SPACE>
cf push