Maven一鍵部署Springboot到Docker倉庫,為自動化做準備
阿新 • • 發佈:2020-07-07
# 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)
**多讀書,多分享;多寫作,多整理。**
**歡迎大家關注、分