Rainbond官方提供了多个版本的OpenJDK供用户使用。这些OpenJDK的安装包托管于好雨科技官方的OSS(对象存储)中。可以接入互联网的Rainbond平台,能够经过rbd-repo组件的代理获取这些资源,而不用人工干预。java
用户经过WEB界面配置,或在源码根目录建立system.properties
,设定java.runtime.version
来指定OpenJDK版本。node
WEB界面设置的值优先级高于
system.properties
中设定的值。linux
system.properties
指定方式:# system.properties 目前Rainbond能识别的版本值为11,10,1.9,1.8,1.7,1.6 java.runtime.version=1.8
在不作出其余任何调整的状况下,在Rainbond执行源码构建时,会获取如下版本的OpenJDK资源:ios
特别提醒:若是maven编译过程当中发生错误,请自行下载对应的JDK到本身的环境中,尝试本地构建,来确认是否因为OpenJDK版本问题致使了编译失败。docker
多数用户但愿可以自定义JDK,好比但愿使用特定版本的OpenJDK,或者具有Oracle的受权使用OracleJDK。接下来就会讲解如何自定义。缓存
Rainbond平台集成了 Jforg出品的 Artifactory 做为制品库(即rbd-repo组件)。在这里咱们能够上传并存储本身的资源,包括jdk包。bash
http://<管理节点IP>:8081
登陆 Artifactory,默认凭证: admin/password须要注意的是,Artifactory 上传文件的默认限制是不能超过 100MB。若是上传的文件超过了这个限制,能够在 Admin > General Configuration 页面中设置 File Upload Max Size 项为一个合适的值。maven
像上述方式上传的jdk包,其地址为: http://<管理节点IP>:8081/artifactory/<自定义仓库名>/<文件名>ui
相似: http://192.168.1.1:8081/artifactory/jdk2/jdk-8u201-linux-x64.tar.gz代理
至此,自定义JDK就完成了。
自定义JDK自由度更高,能适应更多的使用场景。可是其短板在于JDK获取地址在每个新建的应用中都要设置一遍。有没有方式,能够替换Rainbond默认提供的JDK包呢?若是能够实现这个功能,那么每次构建都不用作其余设置,使用默认路径,便可安装公司内部指定版本的JDK,岂不是很方便?
默认JDK的地址,实际上指向了Rainbond官方的对象存储,这对于Artifactory而言,属于一种远程仓库(remote repository)。在Artifactory中,是没有办法经过上传文件,来替换远程仓库中的文件的。因此,咱们要在本地创建另外一个仓库,来替换Rainbond官方提供的远程仓库。
接下来是详细的步骤:
#构建目录的文件结构以下: . ├── Dockerfile └── jdk-8u201-linux-x64.tar.gz #这里使用OracleJDK1.8 为例替换,用户根据本身需求自行更改
Dockerfile内容:
FROM rainbond/buildpack:java-v5.1.5 COPY jdk-8u201-linux-x64.tar.gz /pkg/lang/jdk/cedar-14/openjdk1.8.0_201.tar.gz
构建操做:
docker build -t goodrain.me/buildpack:java-v5.1.5 .
在管理节点编辑指定配置文件:
#vi /opt/rainbond/conf/base.yaml #在末尾追加 - name: rbd-java-buildpack endpoints: - name: BUILDPACK_ENDPOINTS protocol: port: 2017 health: name: rbd-java-buildpack model: http address: 127.0.0.1:2017/lang/ max_errors_num: 3 time_interval: 30 after: - docker type: simple pre_start: docker rm rbd-java-buildpack start: >- docker run --name rbd-java-buildpack --network host -i goodrain.me/buildpack:java-v5.1.5 stop: docker stop rbd-java-buildpack restart_policy: always
启动服务:
node service update
pkg_lang
的远程地址为 http://<管理节点IP>:2017/lang
:若是已经用Rainbond官方远程仓库获取过JDK包,那么要在 pkg_lang-cache中清除已缓存的记录。
至此,就已经将默认的OpenJDK1.8版本,替换成为指定的 OracleJDK1.8版本了。
基于这篇文章,用户已经能够灵活掌握配置使用各类JDK的方式了。
在这篇文章以后,咱们会继续发布如何灵活配置Maven环境的文章,敬请期待。