1. 程式人生 > >Maven一鍵部署Springboot到Docker倉庫,為自動化做準備

Maven一鍵部署Springboot到Docker倉庫,為自動化做準備

# 1 前言 前面《[Springboot整合MongoDB的Docker開發,其它應用也類似](https://www.pkslow.com/archives/docker-springboot-mongo)》講解了如何做`Docker`開發、如何把`Springboot`應用打包成一個映象,但它是手動的,本文將講解如何通過`maven`一鍵打包部署。 # 2 兩個maven外掛搞定 可以使用`maven`外掛實現一鍵部署,這兩個外掛還是同一個公司的產品,就是著名的音樂流服務平臺`Spotify`。 ![](https://img2020.cnblogs.com/other/946674/202007/946674-20200707005034941-1113727578.png) ## 2.1 spotify/docker-maven-plugin ### 2.1.1 基礎用法 該外掛可以實現映象打包和`push`到倉庫,無`Dockerfile`和有`Dockerfile`兩種方式都可以,建議使用`Dockerfile`,更靈活。在`maven`的`pom.xml`檔案加入以下外掛配置: ```xml ``` - `imageName`:這是映象名稱; - `imageTags`:標籤,支援多標籤,即同一個映象檔案多個標籤;我指定了一個引數`imageVersion`,可以命令列傳入,方便後續整合`Jenkins`。 - `forceTags`:是否覆蓋原有標籤; - `dockerDirectory`:Dockerfile檔案所在的位置;而且該目錄下的所有檔案都會被複制到`${project.build.directory}/docker`。因為我的`Dockerfile`放在專案根目錄,所以整個專案的檔案都複製過去了,包括原始碼等。不得不吐槽一下這個設計,這是在強迫大家換個位置放`Dockerfile`嗎? - `resources`:用來新增`dockerDirectory`外的其它資原始檔。 新增後,通過以下命令執行: ```bash $ mvn clean package docker:build -DimageVersion=0.0.4 ``` 通過命令`docker images`檢視成功,執行也正常。 通過下面命令可以push到`registry`: ```bash mvn clean package docker:build -DpushImage mvn clean package docker:build -DpushImageTag ``` ### 2.1.2 與maven生命週期繫結 可以通過新增`executions`配置實現與`maven`生命週期的繫結。 ```xml ``` 有了這些繫結配置後,要打包映象,直接`mvn clean package`即可。 ### 2.1.3 倉庫登陸資訊配置 首先,外掛可以使用配置在本地 `~/.dockercfg` 或 `~/.docker/config.json`的驗證資訊,或者可以顯式地配置在`maven`上。 如配置在`settings.xml`檔案: ```xml ``` 密碼是可以加密的,詳情請檢視: [Maven's built in encryption function](https://maven.apache.org/guides/mini/guide-encryption.html) 。 在專案的`pom.xml`中使用: ```xml ``` ## 2.2 spotify/dockerfile-maven ### 2.2.1 更簡潔的外掛 因為`docker-maven-plugin`有一些Bugs,所以`Spotify`開發了更方便簡潔的外掛`dockerfile-maven`。 ![](https://img2020.cnblogs.com/other/946674/202007/946674-20200707005037857-148879465.png) `dockerfile-maven-plugin`的配置更簡單: ```xml ``` 配置好後,執行以下`maven`命令即可打包成映象並推送到倉庫: ```bash mvn deploy ``` ### 2.2.2 倉庫驗證 賬號可以配置在`pom.xml`中,如下: ```xml ``` 當然,也可以配置在`maven`的配置檔案`settings.xml`中,這樣更安全,請參考:https://github.com/spotify/dockerfile-maven/blob/master/docs/authentication.md # 3 總結 通過`maven`外掛,可以快速方便地一鍵打包、部署,非常方便,對後續的整個`DevOps`整合也是很有益的。 參考資料: docker-maven-plugin:https://github.com/spotify/docker-maven-plugin dockerfile-maven:https://github.com/spotify/dockerfile-maven --- 歡迎訪問[南瓜慢說 www.pkslow.com](https://www.pkslow.com/)獲取更多精彩文章! 歡迎關注微信公眾號<**南瓜慢說**>,將持續為你更新... ![](https://img2020.cnblogs.com/other/946674/202007/946674-20200707005038242-1516063978.png) **多讀書,多分享;多寫作,多整理。** **歡迎大家關注、分