由于公司采用VMWare的pivotal云环境部署应用,今天我做了个测试应用准备部署到PCF环境。由于PCF默认jre8,害得我折腾了好久才搞定,网上基本没查到直接的解决方案,于是就想到分享给大家。
构建spring-boot应用
这个很简单,不再浪费时间了。我的应用是spring-boot 2.6, jdk11
部署到PCF
- 先Login
cf login -a https://xxxx.yyyy.pivotal.io --sso
PCF会返回一个链接给你,用这个链接去取得一个token,就能认证登录了。
- Push应用
先把应用push上去:
cf p myapp -p target\myapp-0.0.1-SNAPSHOT.jar -b https://github.com/cloudfoundry/java-buildpack.git#v4.48
这一步会把应用部署到去环境,但是由于使用是默认的jre8,启动会出错,日志出错信息会说是java版本太新了,不支持之类的。不要理会出错,接着往下看。
- 修改jre版本
cf set-env myapp JBP_CONFIG_OPEN_JDK_JRE "{ jre: { version: 11.+ }}"
cf restage myapp
这一步执行完就会发现应用成功启动了。
终极大法
后来发现用mainifest方法可以简单指定jre11
---
applications:
- name: my-app
host: my-app
path: ./target/my-app-0.0.1-SNAPSHOT.jar
instances: 1
memory: 1G
services:
- csre-conf-svr
env:
SPRING_PROFILES_ACTIVE: sit
JBP_CONFIG_OPEN_JDK_JRE: "{ jre: { version: 11.+ }}"
buildpacks:
- https://github.com/cloudfoundry/java-buildpack.git#v4.48
然后,一步部署:
cf push
搞定!