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環境的文章,敬請期待。