欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Maven一鍵部署Springboot到Docker倉(cāng)庫(kù)為自動(dòng)化做準(zhǔn)備(推薦)

 更新時(shí)間:2020年07月07日 09:01:52   作者:南瓜慢說  
這篇文章主要介紹了Maven一鍵部署Springboot到Docker倉(cāng)庫(kù),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

1 前言

前面《Springboot整合MongoDB的Docker開發(fā),其它應(yīng)用也類似》講解了如何做Docker開發(fā)、如何把Springboot應(yīng)用打包成一個(gè)鏡像,但它是手動(dòng)的,本文將講解如何通過maven一鍵打包部署。

2 兩個(gè)maven插件搞定

可以使用maven插件實(shí)現(xiàn)一鍵部署,這兩個(gè)插件還是同一個(gè)公司的產(chǎn)品,就是著名的音樂流服務(wù)平臺(tái)Spotify

2.1 spotify/docker-maven-plugin

2.1.1 基礎(chǔ)用法

該插件可以實(shí)現(xiàn)鏡像打包和push到倉(cāng)庫(kù),無Dockerfile和有Dockerfile兩種方式都可以,建議使用Dockerfile,更靈活。在mavenpom.xml文件加入以下插件配置:

<plugin>
 <groupId>com.spotify</groupId>
 <artifactId>docker-maven-plugin</artifactId>
 <version>1.2.2</version>
 <configuration>
 <imageName>pkslow/springboot-mongo</imageName>
 <imageTags>
 <imageTag>${imageVersion}</imageTag>
 <imageTag>latest</imageTag>
 </imageTags>
 <!-- optionally overwrite tags every time image is built with docker:build -->
 <forceTags>true</forceTags>
 <dockerDirectory>${project.basedir}</dockerDirectory>
 <resources>
 <resource>
 <targetPath>/</targetPath>
 <directory>${project.build.directory}</directory>
 <include>${project.build.finalName}.jar</include>
 </resource>
 </resources>
 </configuration>
</plugin>
  • imageName:這是鏡像名稱;
  • imageTags:標(biāo)簽,支持多標(biāo)簽,即同一個(gè)鏡像文件多個(gè)標(biāo)簽;我指定了一個(gè)參數(shù)imageVersion,可以命令行傳入,方便后續(xù)整合Jenkins。
  • forceTags:是否覆蓋原有標(biāo)簽;
  • dockerDirectory:Dockerfile文件所在的位置;而且該目錄下的所有文件都會(huì)被復(fù)制到${project.build.directory}/docker。因?yàn)槲业?code>Dockerfile放在項(xiàng)目根目錄,所以整個(gè)項(xiàng)目的文件都復(fù)制過去了,包括源代碼等。不得不吐槽一下這個(gè)設(shè)計(jì),這是在強(qiáng)迫大家換個(gè)位置放Dockerfile嗎?
  • resources:用來添加dockerDirectory外的其它資源文件。

添加后,通過以下命令執(zhí)行:

$ mvn clean package docker:build -DimageVersion=0.0.4

通過命令docker images查看成功,運(yùn)行也正常。

通過下面命令可以push到registry

mvn clean package docker:build -DpushImage

mvn clean package docker:build -DpushImageTag

2.1.2 與maven生命周期綁定

可以通過添加executions配置實(shí)現(xiàn)與maven生命周期的綁定。

<plugin>
 <groupId>com.spotify</groupId>
 <artifactId>docker-maven-plugin</artifactId>
 <version>VERSION GOES HERE</version>
 <executions>
 <execution>
 <id>build-image</id>
 <phase>package</phase>
 <goals>
 <goal>build</goal>
 </goals>
 </execution>
 <execution>
 <id>tag-image</id>
 <phase>package</phase>
 <goals>
 <goal>tag</goal>
 </goals>
 <configuration>
 <image>my-image:${project.version}</image>
 <newName>registry.example.com/my-image:${project.version}</newName>
 </configuration>
 </execution>
 <execution>
 <id>push-image</id>
 <phase>deploy</phase>
 <goals>
 <goal>push</goal>
 </goals>
 <configuration>
 <imageName>registry.example.com/my-image:${project.version}</imageName>
 </configuration>
 </execution> 
 </executions>
</plugin>

有了這些綁定配置后,要打包鏡像,直接mvn clean package即可。

2.1.3 倉(cāng)庫(kù)登陸信息配置

首先,插件可以使用配置在本地 ~/.dockercfg~/.docker/config.json的驗(yàn)證信息,或者可以顯式地配置在maven上。

如配置在settings.xml文件:

<servers>
 <server>
 <id>docker-hub</id>
 <username>foo</username>
 <password>secret-password</password>
 <configuration>
 <email>foo@foo.bar</email>
 </configuration>
 </server>
</servers>

密碼是可以加密的,詳情請(qǐng)查看: 。

在項(xiàng)目的pom.xml中使用:

<plugins>
 <plugin>
 <groupId>com.spotify</groupId>
 <artifactId>docker-maven-plugin</artifactId>
 <version>VERSION GOES HERE</version>
 <configuration>
 [...]
 <serverId>docker-hub</serverId>
 <registryUrl>https://index.docker.io/v1/</registryUrl>
 </configuration>
 </plugin>
</plugins>

2.2 spotify/dockerfile-maven

2.2.1 更簡(jiǎn)潔的插件

因?yàn)?code>docker-maven-plugin有一些Bugs,所以Spotify開發(fā)了更方便簡(jiǎn)潔的插件dockerfile-maven。

dockerfile-maven-plugin的配置更簡(jiǎn)單:

<plugin>
 <groupId>com.spotify</groupId>
 <artifactId>dockerfile-maven-plugin</artifactId>
 <version>${dockerfile-maven-version}</version>
 <executions>
 <execution>
 <id>default</id>
 <goals>
 <goal>build</goal>
 <goal>push</goal>
 </goals>
 </execution>
 </executions>
 <configuration>
 <repository>spotify/foobar</repository>
 <tag>${project.version}</tag>
 <buildArgs>
 <JAR_FILE>${project.build.finalName}.jar</JAR_FILE>
 </buildArgs>
 </configuration>
</plugin>

配置好后,執(zhí)行以下maven命令即可打包成鏡像并推送到倉(cāng)庫(kù):

mvn deploy

2.2.2 倉(cāng)庫(kù)驗(yàn)證

賬號(hào)可以配置在pom.xml中,如下:

<plugin>
 <groupId>com.spotify</groupId>
 <artifactId>dockerfile-maven-plugin</artifactId>
 <version>${version}</version>
 <configuration>
 <username>repoUserName</username>
 <password>repoPassword</password>
 <repository>${docker.image.prefix}/${project.artifactId}</repository>
 <buildArgs>
  <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
 </buildArgs>
 </configuration>
</plugin>

當(dāng)然,也可以配置在maven的配置文件settings.xml中,這樣更安全,請(qǐng)參考:https://github.com/spotify/dockerfile-maven/blob/master/docs/authentication.md

3 總結(jié)

通過maven插件,可以快速方便地一鍵打包、部署,非常方便,對(duì)后續(xù)的整個(gè)DevOps整合也是很有益的。

參考資料:

docker-maven-plugin:https://github.com/spotify/docker-maven-plugin

到此這篇關(guān)于Maven一鍵部署Springboot到Docker倉(cāng)庫(kù)為自動(dòng)化做準(zhǔn)備的文章就介紹到這了,更多相關(guān)Maven一鍵部署Springboot到Docker倉(cāng)庫(kù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Micronaut框架的簡(jiǎn)單使用介紹

    Micronaut框架的簡(jiǎn)單使用介紹

    這篇文章主要介紹了Micronaut框架的簡(jiǎn)單使用介紹,幫助大家更好的理解和學(xué)習(xí)使用Micronaut,感興趣的朋友可以了解下
    2021-04-04
  • Spring中@Transactional注解的屬性說明

    Spring中@Transactional注解的屬性說明

    這篇文章主要介紹了Spring中@Transactional注解的屬性說明,@Transactional 是聲明式事務(wù)管理 編程中使用的注解,@Transactional 注解應(yīng)該只被應(yīng)用到 public 方法上,這是由 Spring AOP 的本質(zhì)決定的,需要的朋友可以參考下
    2023-11-11
  • IDEA對(duì)使用了第三方依賴jar包的非Maven項(xiàng)目打jar包的問題(圖文詳解)

    IDEA對(duì)使用了第三方依賴jar包的非Maven項(xiàng)目打jar包的問題(圖文詳解)

    這篇文章主要介紹了IDEA對(duì)使用了第三方依賴jar包的非Maven項(xiàng)目打jar包的問題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • spring使用ehcache實(shí)現(xiàn)頁(yè)面緩存示例

    spring使用ehcache實(shí)現(xiàn)頁(yè)面緩存示例

    這篇文章主要介紹了spring使用ehcache實(shí)現(xiàn)頁(yè)面緩存示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-02-02
  • Spring Boot Filter 過濾器的使用方式

    Spring Boot Filter 過濾器的使用方式

    這篇文章主要介紹了Spring Boot Filter 過濾器的使用方式,文章通過圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-09-09
  • Spring MVC參數(shù)傳遞中文亂碼解決方法分享

    Spring MVC參數(shù)傳遞中文亂碼解決方法分享

    這篇文章主要介紹了Spring MVC參數(shù)傳遞中文亂碼解決方法分享,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-12-12
  • Mybatis?saveAndUpdate空值不更新問題及解決

    Mybatis?saveAndUpdate空值不更新問題及解決

    這篇文章主要介紹了Mybatis?saveAndUpdate空值不更新問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • 解析阿里GTS開源版本fescar分布式事務(wù)

    解析阿里GTS開源版本fescar分布式事務(wù)

    這篇文章主要為大家介紹解析阿里GTS開源版本fescar分布式事務(wù)的原理及使用說明,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多進(jìn)步
    2022-02-02
  • Java之ThreadPoolExecutor類詳解

    Java之ThreadPoolExecutor類詳解

    這篇文章主要介紹了Java之ThreadPoolExecutor類詳解,本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • Java ThreadLocal的使用詳解

    Java ThreadLocal的使用詳解

    ThreadLocal是線程私有的局部變量存儲(chǔ)容器,可以理解成每個(gè)線程都有自己專屬的存儲(chǔ)容器,用來存儲(chǔ)線程私有變量。ThreadLocal 在日常開發(fā)框架中應(yīng)用廣泛,但用不好也會(huì)出現(xiàn)各種問題,本文就此講解一下。
    2021-05-05

最新評(píng)論