Spring Boot 2.0 が動く Cloud Foundry ビルドパック

今回は Spring Boot 2.0 を Cloud Foundry で動かす話です.
ビルドパック依存で動かない原因を正確に判別できていないのですが、とりあえず動くものは分かりました.
08/15 追記: 原因も判別できました

  • liberty-for-java … △
  • java_buildpack … ✕
  • https://github.com/cloudfoundry/java-buildpack.git … ◯

ビルドパックのバージョンは以下になります(コマンド結果を一部省略)

$ ibmcloud cf buildpacks

liberty-for-java	buildpack_liberty-for-java_v3.24-20180806-1313.zip
java_buildpack		java-buildpack-v3.19.zip

 

liberty-for-java で動かない原因

Spring Boot ではなく、Spring Data JPA との相性が原因でした.

回避策は JTA を無効化することです.

spring:
  jta:
    enabled: false #Libertyで動かすための対応

  
JPA が原因なので、JPA を使わない場合は気にしないで大丈夫です.

 

java_buildpack で動かない原因

Spring Boot 2.0 が Tomcat 8.5 以降でないと動かないことが原因でした.

最新版 4.15 ではこのコミットは merge されているので正常に動きます.
Cloud Foundry のビルドパックバージョンが上がるまでは、GitHub の最新版を指定する運用になりそうです.

 

manifest.yml

参考までに Liberty と GitHub の最新版で動かすための manifest.yml を置いておきます.

applications:
- name: myapp
  buildpack: liberty-for-java
  memory: 1024M
  instances: 1
  path: build/libs/myapp.war
applications:
- name: myapp
  buildpack: https://github.com/cloudfoundry/java-buildpack.git
  memory: 1024M
  instances: 1
  path: build/libs/myapp.war

 

以上です.