Spring Boot 2.3.0.RELEASE 正式發佈了幾天了,其中有個新的特性:能夠將Spring Boot應用代碼直接打包爲Docker鏡像。這是什麼科技?我趕忙去官網查了一番才知道用的是基於雲原生的Buildpacks技術,這是一個直接將代碼轉換爲容器鏡像的技術,它意味着你不用在寫Dockerfile文件了。spring
可是 Spring Boot 2.3.0.RELEASE 的鏡像構建插件好像有BUG,等後續修復吧。 可是本文的相關實踐並不採用官方的插件。
在瞭解這種技術以前,咱們先想一想咱們開發的Java應用運行起來都須要什麼?編程
application.yml
的環境配置。若是咱們有一種工具來處理這些問題就行了,咱們能夠快速的實現從源碼到運行時的工做流程。windows
Buildpacks就是來解決這一問題的。這不是重複的輪子!與咱們熟悉的Dockerfile相比,Buildpacks爲構建應用程序提供了更高層次的構建抽象。緩存
目前Buildpacks 支持 Linux、MacOS、Windows。你能夠從 Buildpacks的官方文檔獲取詳細的安裝方法,由於過於簡單這裏再也不介紹。安全
別忘記配置 Buildpacks 的環境變量。在 Win10 上須要將 Buildpacks 的安裝目錄配置到 path 環境變量中。bash
若是Buildpacks 的路徑爲 D:\pack-v0.10.0-windows\pack.exe
則:app
而後命令行執行 pack version
,打印出版本號就表示安裝成功了。maven
安裝 Buildpacks的先決條件是,擁有 Docker運行時,你須要在對應操做系統上安裝並運行 Docker 。
這裏咱們使用一個標準的Spring Boot項目,在項目的根目錄下須要安裝 Maven wrapper。Maven Wrapper的做用是:發現用戶的Maven版本和指望的版本不一致,下載指望的版本,而後用指望的版原本執行mvn命令,安裝命令爲:ionic
mvn -N io.takari:maven:wrapper
通常從 Spring Initializr 生成的項目都自帶 Maven wrapper。
完成上面的幾步以後。執行下面的命令構建Docker鏡像:編程語言
pack build myapp --builder cnbs/sample-builder:bionic
執行完畢後你的 Docker 鏡像就構建完畢了,甚至有須要的話你能夠再追加 --publisher
命令將鏡像上傳到Docker鏡像倉庫。 和以往不一樣的是無需編寫Dockfile文件。
初次構建的時間可能會比較長,由於要安裝一些基礎設施,之後再構建就會快得多,由於會重用這些有用的緩存。有興趣的能夠對比一下。
Buildpacks是CNCF基金會的孵化項目,這次Spring Boot 2.3.0.RELEASE和它的結合,是Spring Boot構建雲原生應用的重要里程碑。後面我會抽時間對Buildpacks進行進一步的介紹,敬請關注個人我的博客felord.cn。
關注公衆號:Felordcn 獲取更多資訊