Technical Blog テクニカルブログ
  1. HOME
  2. テクニカルブログ
  3. IBM CloudでSpring boot Appを動かす

IBM CloudでSpring boot Appを動かす

投稿者:國藤 篤規

IBM CloudでSpring boot Appを動かす

こんにちは。先日開催されたGeekイベント「TechCon 2018」(社内イベント)にて、参加者が投票を行うアプリを作成しました。その際、IBM Cloud 上で Spring boot アプリを動かしてみましたので、今回は設定方法を中心にご紹介します。

Spring boot App

DIコンテナを核とした様々なプロジェクトの集合体がSpringです。Spring boot は 従来、XMLファイルでの設定が必要だった箇所が、アノーテーションベースに対応し、必要な設定が少なくなった点が大きな違いです。もう一点、Apache tomcat を内包した jar が生成される点も違います。そのため、J2EEアプリケーションサーバ上ではなく、Java アプリケーションとして起動する必要があります。

ディプロイまでの流れ

まず、IBM Cloud上でCloudFoundry アプリを作成します。この時、Liberty for Java など、いくつかのランタイムがありますが、後程 buildpack を上書きするので、この時点では何を選んでも構いません。

Spring_boot_app2.png
拡大版

以下のような manifest.yml を作成して、プロジェクトルートフォルダに配置します。

manifest.yml

---
applications:
- name: TechCon2018
  buildpack: https://github.com/cloudfoundry/java-buildpack.git
  memory: 1024M
  instances: 1
  path: target/TechCon2018-0.0.2-SNAPSHOT.jar
  env:
    SPRING_PROFILES_ACTIVE: cloud

(1) buildpack
Javaアプリケーションとして起動するため、java-buildpackを指定します。
(2) memory
デフォルト値のままだと、メモリが不足して立ち上がりませんでした。600M 程度必要なようですが、余裕を見て
1G を指定しています。
(3) env
アクティブなプロファイル(Springの概念です)に

cloud
を含めます。こうすることで、cloud(CloudFoundry)
に最適化された bean がインジェクションされるようです。

manifest.yml を置いたディレクトリまで移動して、bxコマンドでログインまで済ませて、以下のコマンドで ディプロイします。


bluemix app push TechCon2018 > nul

私の環境では、push 時のログのエスケープシーケンスが文字化けして、push が終わってもコマンドラインに返ってこない状態になったので、リダイレクトして捨てています。しばらく待つと、ディプロイされて立ち上がってきました。ビルドパックも変更されています。

Spring_boot_app3.png
拡大版

サービスへの接続

Spring boot 特有の Tips ではありませんが、サービスへの接続も確認しておきましょう。今回は Cloudant に接続してみます。
まず、クライアントライブラリを追加します。(Mavenの例)

Pom.xml

<dependency>
	<groupId>com.cloudant</groupId>
	<artifactId>cloudant-client</artifactId>
	<version>2.11.0</version>
</dependency>

IBM Cloud 上でCloudantに接続します。

Spring_boot_app4.png
拡大版

アプリケーションから接続する際は、以下のように VCAP_SERVICES から接続情報を取得します。


	CloudantClient client = ClientBuilder.bluemix( System.getenv("VCAP_SERVICES") ).build();
	Database db = client.database("log", true);

上述の方法で push すると、接続できていることが確認できました。

Spring_boot_app5.png
拡大版

まとめ

いくつか、知らないとつっかかる点がありますが、簡単な設定で IBM Cloud 上で Spring boot App を動かせることがお分かりいただけたと思います。
また、buildpack はさまざまなものが公開されています。眺めているだけでも楽しい気持ちになれますね。

ページのトップへ