本文示例完整demo github地址 github.com/moxingwang/…java
想要了解而且使用jib,首先你得知道或者使用過docker,在這個基礎上纔可以明白jib是幹什麼得,解決了什麼問題。git
首先咱們先看一個例子,如何將一個spring-boot項目簡單容器化,若是你從未操做過,能夠動手本身實現,或者仔細閱讀這篇文章第一個 spring Boot 應用經過Docker 來實現構建、運行、發佈。你可能發現若是須要把一個java項目容器化這是一個麻煩和相對複雜的過程,首先你須要編寫dockerfile,而後在build dockefile,如過須要push到registries,還須要通過push操做。雖然build和push仍是很是簡單得。可是寫一個dockerfile真的比較麻煩,學習成本也高,看看官網Dockerfile reference就不想學了。那麼有沒有簡單得辦法呢,記住幾個簡單得命令就能夠運行了,如同‘mvn spring-boot:run’這麼簡單得命令,這個時候jib出場了,他就是來完成這個偉大得使命。github
若是你還沒明白jib是用來作什麼事情得,推薦你閱讀谷歌開源Java鏡像構建工具Jib的前半部分,或者閱讀jib Official:GoogleContainerTools/jib。spring
接下來主要介紹具體如何使用(maven的方式)。docker
jib的引入很是簡單,已maven plugin的方式集成到項目中,只須要在你的項目中引入下面代碼便可瀏覽器
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<version>0.9.6</version>
<configuration>
<from>
<!--base image-->
<image>openjdk:alpine</image>
</from>
<to>
<!--<image>registry.cn-hangzhou.aliyuncs.com/m65536/jibtest</image>-->
<!--目標鏡像registry地址,爲了方便測試,你須要換成本身的地址,若是你的網絡很差,能夠選用國內加速器,好比阿里雲的-->
<image>registry.hub.docker.com/moxingwang/jibtest</image>
</to>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
</plugin>
複製代碼
這只是一個最簡單的配置,好比registry認證配置,jvm配置等等,能夠參考github jib詳細說明jib/jib-maven-plugin/。bash
mvn compile jib:build
複製代碼
可能你剛剛運行玩這一步就出現錯誤,提示Unauthorized,不用擔憂,這個命令須要把構建出來的image commit而且push到你遠程的registry(我這裏是registry.hub.docker.com),你能夠按照【常見錯誤1】的方法解決問題。網絡
若是你的網速慢一點可能會在最後步驟'Finalizing...',不過沒有關係,稍微多等一會就ok,直到'BUILD SUCCESS'出現。最終一個完整的java project被實例化成鏡像而且push到了registry裏。接下來你能夠測試剛剛完成push的鏡像。jvm
打開hub.docker.com/,你會發現你的image已經構建成功。
docker run -it --rm -p8080:8080 registry.hub.docker.com/moxingwang/jibtest
複製代碼
一個spring-boot的image這樣就被啓動成功了。本文示例demo中集成了swagger-iu, 項目啓動成功後咱們能夠經過http://localhost:8080/sw/swagger-ui.html訪問,能夠成功在瀏覽器打開swagger。
使用這種構建方式,首先你要確保本已經安裝docker而且環境變量都配置正確,由於這種方式jib依賴docker 命令執行,你還須要保證已經啓動服務(在terminal中執行 docker --version 可以正確返回)。
mvn compile jib:dockerBuild
複製代碼
接下來直接操做,首先查看本地已有images
docker iamges
複製代碼
執行mvn compile jib:dockerBuild
能夠看到本地image已經build成功。能夠直接啓動使用
docker run -it --rm -p8080:8080 moxingwang/jibtest
複製代碼
啓動成功後一樣能夠直接訪問http://localhost:8080/sw/swagger-ui.htmlswagger頁面。
當你從私有的registries pull或者push的時候須要認證機制。閱讀官方說明按照步驟操做便可。Authentication Methods。 若是幫你本機已經按照docker,那麼操做更簡單,能夠經過docker命令直接登錄registries,而後繼續其餘jib的操做。
docker login --username=你的hub.docker的用戶名 registry.hub.docker.com
複製代碼
docker login --username=阿里雲docker用戶名 registry.cn-hangzhou.aliyuncs.com
複製代碼