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
以上です.