6.6. OpenShift での Spring Boot での Dekorate の使用
以下の例は、方法を示しています。
-
アプリケーションで
openshift-spring-stater
を使用できます。 - Dekorate は、アプリケーションのタイプを自動的に識別し、OpenShift サービスルートおよびプローブを随時設定できます。
- Maven がアプリケーションをコンパイルした後に、source-to-image ビルドをトリガーするようにアプリケーションを設定できます。
前提条件
- Spring Boot および Dekorate を使用するよう設定された Maven ベースのアプリケーションプロジェクト
-
@SpringBootApplication
アノテーションがプロジェクトのソースファイルに追加されました。 - Java JDK 8 または JDK 11 がインストールされている。
- Maven がインストールされている。
-
oc
コマンドラインツールがインストールされている -
oc
コマンドラインツールを使用して OpenShift クラスターにログインしている。
手順
Dekorate Spring Starter は、アプリケーションプロジェクトの
pom.xml
ファイルの依存関係として追加します。pom.xml
<project> ... <dependencies> ... <dependency> <groupId>io.dekorate</groupId> <artifactId>openshift-spring-starter</artifactId> </dependency> ... </dependencies> ... <project>
Main.java
クラスファイルに@OpenShiftApplication
アノテーションを付けます。これにより、アプリケーションをコンパイルする際に Source-to-Image ビルドを起動できます。/src/main/java/io/dekorate/example/sbonopenshift/Main.java
package io.dekorate.example.sbonopenshift; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @OpenShiftApplication @SpringBootApplication public class Main { public static void main(String[] args) { SpringApplication.run(Main.class, args); } }
Rest コントローラーをアプリケーションに追加します。
/src/main/java/io/dekorate/example/sbonopenshift/Controller.java
package io.dekorate.example.sbonopenshift; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class Controller { @RequestMapping("/") public String hello() { return "Hello world"; } }
Dekorate Spring スターターによって提供される Spring アプリケーションプロセッサーは Rest コントローラーを自動的に検出し、アプリケーションタイプを Web アプリケーションとして識別します。Web アプリケーションの場合、Dekorate は OpenShift アプリケーションテンプレートを自動的に生成し、以下を設定します。
- アプリケーションの OpenShift Service ルート
- アプリケーションのルートでサービスを公開します。
- Liveness および Readiness プローブの設定
-
アプリケーションをビルドしてデプロイします。Maven がアプリケーションをコンパイルした後に source-to-image ビルドを自動的に実行するには、
-Ddekorate.deploy=true
プロパティーを含めます。
mvn clean install -Ddekorate.deploy=true