国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Spring?Boot配置docker-maven-plugin實(shí)現(xiàn)構(gòu)建與推送鏡像

這篇具有很好參考價(jià)值的文章主要介紹了Spring?Boot配置docker-maven-plugin實(shí)現(xiàn)構(gòu)建與推送鏡像。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一、背景

1、優(yōu)化前:

目前構(gòu)建docker鏡像都是先執(zhí)行mvn clean package打包之后,將target目錄下的jar包放到服務(wù)器上,再通過Dockerfile去build成鏡像,步驟多,而且每次都需要登錄服務(wù)器進(jìn)行操作,十分麻煩。

2、優(yōu)化后:

在Spring Boot項(xiàng)目中引入docker-maven-plugin進(jìn)行相關(guān)配置,之后就可以在項(xiàng)目根目錄下執(zhí)行mvn clean package docker:build -DpushImage,就可以在服務(wù)器上的docker生成鏡像,并且推送到遠(yuǎn)程倉庫上,十分方便,不用每次都登錄服務(wù)器進(jìn)行操作。

在進(jìn)行項(xiàng)目引入docker-maven-plugin之前,先進(jìn)行docker的配置,使我們能夠通過2375端口訪問到docker。

二、配置docker,開放2375端口

Docker的2375端口是默認(rèn)關(guān)閉的,如果我們要使用到它,就需要進(jìn)行以下的配置:

1、安裝有docker的服務(wù)器,修改docker.service文件:

vi /etc/systemd/system/docker.service

具體文件所在地,得看你安裝docker的位置,如果不知道自己安裝在哪里了,執(zhí)行以下指令去查找:

sudo find / -name docker.service

2、修改docker.service

找到文件以下內(nèi)容:

ExecStart=/usr/bin/dockerd

修改為:

ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

3、重啟docker服務(wù)

systemctl daemon-reload
systemctl restart docker

4、查看端口是否開啟

netstat -anp | grep 2375

如果沒有被占用,就什么都不顯示

5、如果通過以上配置,發(fā)現(xiàn)2375沒有開啟的話,那么請(qǐng)嘗試修改daemon.json文件:

vi /etc/docker/daemon.json

具體文件所在地,得看你安裝docker的位置,如果不知道自己安裝在哪里了,執(zhí)行以下指令去查找:

sudo find / -name daemon.json

在配置文件添加上hosts項(xiàng):

{
  "insecure-registries":["xx.xx.xx.xx:5000"],
? "hosts": ["tcp://0.0.0.0:2375", "unix:///var/run/docker.sock"]
}

通過以上操作,基本可以打開2375端口,并且可以通過該端口連接上docker,如果還是不行,那么請(qǐng)通過網(wǎng)絡(luò)查找原因及解決方法了哈。

注意:以上開發(fā)的2375端口訪問docker的方式是不安全的,如果想要安全的訪問,請(qǐng)自行百度了解。

三、搭建docker registry,鏡像推送的倉庫

一般我們的鏡像除了放在docker上,還可以將其推送到docker registry上,其他服務(wù)器上的docker就可以在該docker registry上拉取鏡像。

關(guān)于docker registry的安裝及配置,請(qǐng)參考我的另外一篇博客,這里就不重復(fù)去寫了:

https://blog.csdn.net/Staba/article/details/124550444?spm=1001.2014.3001.5502

四、項(xiàng)目配置docker-maven-plugin

  1. 在父工程pom.xml配置如下,如果你不愿意將插件在父工程的pom.xml中進(jìn)行管理與配置,那么就將以下配置去掉pluginManagemt標(biāo)簽,然后放在子工程中的pom.xml中即可

<!--你的其他配置-->

<profiles>
    <profile>
        <!--默認(rèn)激活配置-->
        <id>dev</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <imageVersion>${project.version}</imageVersion>
            <tag.suffix>dev</tag.suffix>
            <docker.host>http://開發(fā)環(huán)境服務(wù)器ip:2375</docker.host>
            <docker.registry>開發(fā)環(huán)境docker registry服務(wù)器ip:5000</docker.registry>
        </properties>
    </profile>
    <profile>
        <id>test</id>
        <properties>
            <imageVersion>${project.version}</imageVersion>
            <tag.suffix>test</tag.suffix>
            <docker.host>http://測(cè)試環(huán)境服務(wù)器ip:2375</docker.host>
            <docker.registry>測(cè)試環(huán)境docker registry服務(wù)器ip:5000</docker.registry>
        </properties>
    </profile>
    <profile>
        <id>prod</id>
        <properties>
            <imageVersion>${project.version}</imageVersion>
            <tag.suffix>prod</tag.suffix>
            <docker.host>http://生產(chǎn)環(huán)境服務(wù)器ip:2375</docker.host>
            <docker.registry>生產(chǎn)環(huán)境docker registry服務(wù)器ip:5000</docker.registry>
        </properties>
    </profile>
</profiles>

<build>
? ? <pluginManagement>
    ? ? <plugins>

? ? ? ? ? ? <!—如果是springboot項(xiàng)目,引入這個(gè),否則打的jar包大小不正確-->
? ? ? ? ? ? <plugin>
? ? ? ? ? ?     <groupId>org.springframework.boot</groupId>
? ? ? ? ? ?     <artifactId>spring-boot-maven-plugin</artifactId>
? ? ? ? ? ?     <version>${spring-boot.version}</version>
? ? ? ? ? ? </plugin>
? ? 
? ?         <plugin>
? ?             <groupId>com.spotify</groupId>
? ?             <artifactId>docker-maven-plugin</artifactId>
? ?             <version>1.2.2</version>
? ?             <!--有需求就綁定,不綁定就更加靈活點(diǎn)-->
? ?             <!--<executions>
? ?                 &lt;!&ndash; 當(dāng)mvn執(zhí)行install操作的時(shí)候,執(zhí)行docker的build和push &ndash;&gt;
? ?                 <execution>
? ?                     <id>buildAndPush</id>
? ?                     <phase>install</phase>
? ?                     <goals>
? ?                         <goal>build</goal>
? ?                         &lt;!&ndash;                            <goal>push</goal>&ndash;&gt;
? ?                     </goals>
? ?                 </execution>
? ?             </executions>-->
? ?             <configuration>
? ?                 <!--docker build 開始-->
? ?                 <!-- 連接到 帶docker環(huán)境的linux服務(wù)器 編譯image -->
? ?                 <dockerHost>${docker.host}</dockerHost>
? ? 
? ?                 <!-- 指定tag版本,可不加,在imageName上指定-->
? ?                 <!-- <imageTags>-->
? ?                 <!--    <imageTag>${project.version}</imageTag>-->
? ?                 <!-- </imageTags>-->
? ?                 <!-- build 時(shí)強(qiáng)制覆蓋 tag,配合 imageTags 使用 -->
? ?                 <!--<forceTags>true</forceTags>-->
? ? 
? ?                 <!--
? ?                     格式:私有倉庫/鏡像名稱:版本號(hào), 如果要執(zhí)行push操作, 那么鏡像名稱必須為私有倉庫為前綴,且后綴為版本號(hào),不然無效
? ?                     注意:鏡像名稱不加:tag, build時(shí)會(huì)生成latest和你指定版本的兩個(gè)鏡像,加上只生成一個(gè)tag為你指定版本的鏡像
? ?                 -->
? ?                 <imageName>${docker.registry}/${project.artifactId}:${imageVersion}-${tag.suffix}</imageName>
? ? 
? ?                 <!--指定dockerfile文件路徑-->
? ?                 <dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>
? ? 
? ?                 <!-- 用于指定需要復(fù)制的文件,需要包含jar包 -->
? ?                 <resources>
? ?                     <resource>
? ?                         <targetPath>/</targetPath>
? ?                         <directory>${project.build.directory}</directory>
? ?                         <include>${project.build.finalName}.jar</include>
? ?                     </resource>
? ?                 </resources>
? ?                 <!--docker build 結(jié)束-->
? ? 
? ? 
? ?                 <!-- push到 docker hub/registry 開始 -->
? ?                 <!--serverId 這個(gè)是配置在maven的setting.xml中hub/registry的登錄賬戶信息,無密碼登錄則無需配置-->
? ?                 <!--<serverId>docker-registry</serverId>-->
? ?                 <!--docker hub/registry地址-->
? ?                 <registryUrl>${docker.registry}</registryUrl>
? ?                 <!--重試推送次數(shù)-->
? ?                 <retryPushCount>3</retryPushCount>
? ?                 <!--推送超時(shí)時(shí)間-->
? ?                 <retryPushTimeout>2000</retryPushTimeout>
? ?                 <!--是否自動(dòng)推送到Registry Server, 建議手動(dòng)推送,開啟后build之后就會(huì)push,執(zhí)行mvn時(shí)就無需加上-DpushImage -->
? ?                 <!--<pushImage>true</pushImage>-->
? ?                 <!-- push到 docker hub 結(jié)束 -->
? ?             </configuration>
? ?         </plugin>
? ?     </plugins>
? ? </pluginManagement>

</build>

如果指定了<serverId>xxx</serverId>,那么請(qǐng)?jiān)趍aven的setting.xml中配置以下信息:

<server>
      <id>xxx</id>
      <username>your username</username>
      <password>your password</password>
      <configuration>
        <email>you email</email>
      </configuration>
</server>

2、子工程引入插件,因?yàn)閐ocker相關(guān)配置都在父工程中寫好了,子工程中無須重復(fù)寫,只需引入插件

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>

        <plugin>
            <groupId>com.spotify</groupId>
            <artifactId>docker-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

3、在<dockerDirectory>標(biāo)簽中指定的路徑下創(chuàng)建Dockerfile文件,內(nèi)容如下:

FROM java
VOLUME /tmp
ENV LANG C.UTF-8 
COPY *.jar app.jar
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 
RUN echo "Asia/Shanghai" > /etc/timezone 
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom", "-Djava.util.Arrays.useLegacyMergeSort=true", "-jar","app.jar"]

4、在子項(xiàng)目根路徑上執(zhí)行mvn clean package -P dev -DimageVersion='1.0.9' docker:build –DpushImage指令,即可將target目錄下的jar包構(gòu)建成鏡像,并且推送到docker registry上。

參數(shù)解析:

-P dev -> 由于我們?cè)赑rofile標(biāo)簽中指定了不同環(huán)境中使用不同服務(wù)器上的docker,所有由該參數(shù)指定我們哪個(gè)環(huán)境的配置生效,默認(rèn)是dev生效(配置了)。
-DimageVersion='1.0.9' -> 在配置中我們這個(gè)屬性默認(rèn)值是當(dāng)前項(xiàng)目版本,通過該參數(shù)指定我們打包鏡像的tag最終版本,因?yàn)閼械拿看稳ジ膒om中的version標(biāo)簽,于是自定義一個(gè)屬性,通過命令行傳入版本
docker:build -> 打包完jar之后就會(huì)指定docker build指令,將jar包構(gòu)建成鏡像
–DpushImage –> 構(gòu)建完鏡像之后就會(huì)將鏡像推送到docker registry倉庫上
-DpushImageTag -> 如果在<imageTags>中指定了tag,且在<imageName>中沒有:tag信息,使用pushImageTag去推送標(biāo)簽指定的tags鏡像

當(dāng)然,如果你懶的去敲docker相關(guān)的指令,可以與maven插件的各執(zhí)行周期綁定,那么就請(qǐng)?jiān)趀xecutions中進(jìn)行綁定配置。

通過執(zhí)行以上的指令,就可以在控制臺(tái)上看到鏡像build的過程以及推送的過程。文章來源地址http://www.zghlxwxcb.cn/news/detail-554724.html

到了這里,關(guān)于Spring?Boot配置docker-maven-plugin實(shí)現(xiàn)構(gòu)建與推送鏡像的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 使用docker-maven-plugin插件構(gòu)建鏡像并推送至私服Harbor

    使用docker-maven-plugin插件構(gòu)建鏡像并推送至私服Harbor

    如下所示,建議使用 Dockerfile Maven 插件,但該插件也停止維護(hù)更新了。因此先暫時(shí)使用 docker-maven-plugin 插件。 默認(rèn)的dokcer是不支持遠(yuǎn)程訪問的,需要加點(diǎn)配置,開啟Docker的遠(yuǎn)程訪問 確定docker配置文件位置在:/etc/systemd/system/docker.service 然后編輯修改docker配置文件: 找到包含

    2024年02月11日
    瀏覽(20)
  • SpringBoot項(xiàng)目使用docker-maven-plugin插件構(gòu)建docker鏡像以及推送到docker hub或docker registry私服

    SpringBoot項(xiàng)目使用docker-maven-plugin插件構(gòu)建docker鏡像以及推送到docker hub或docker registry私服

    我們知道docker可將應(yīng)用程序和基礎(chǔ)設(shè)施層隔離,可更快地打包、測(cè)試以及部署應(yīng)用程序。本文主要介紹SpringBoot項(xiàng)目如何構(gòu)建docker鏡像以及推送到私服或者docker hub服務(wù)器上。 本文介紹的方式是使用docker-maven-plugin的方式構(gòu)建SpringBoot的docker鏡像以及推送到私服或docker hub服務(wù)器上

    2024年02月16日
    瀏覽(21)
  • idea打包docker鏡像時(shí)出現(xiàn)“Failed to execute goal com.spotify:docker-maven-plugin:1.2.2:build (build-image) “

    idea打包docker鏡像時(shí)出現(xiàn)“Failed to execute goal com.spotify:docker-maven-plugin:1.2.2:build (build-image) “

    ?問題解決參考地址 解決方法1:先看第一張圖片,一開始我也是不知道什么原因?qū)е碌?,后來看到build時(shí)獲取的ProgressMessage信息都是空的,然后一點(diǎn)點(diǎn)排查,然后發(fā)現(xiàn)是鏡像命名的問題的,鏡像命名不允許使用駝峰命令。 ? 解決方法2:可能是docker 上沒有內(nèi)存了,也會(huì)報(bào)錯(cuò)。

    2024年02月11日
    瀏覽(100)
  • Plugin ‘org.springframework.boot:spring-boot-maven-plugin:‘ not found

    Plugin ‘org.springframework.boot:spring-boot-maven-plugin:‘ not found

    Plugin ‘org.springframework.boot:spring-boot-maven-plugin:‘ not found pom.xml 文件的配置情況,如下所示: Maven倉庫中存在多個(gè)版本的 spring-boot-maven-plugin 包,如下所示: 無法識(shí)別使用哪個(gè)版本的 spring-boot-maven-plugin 包。 方案1:使用 version 標(biāo)簽添加 版本號(hào) ,如下所示。 方案2:使用 plugi

    2024年02月01日
    瀏覽(89)
  • Cannot resolve plugin org.springframework.boot:spring-boot-maven-plugin: 解決辦法

    方法一 可能是你的鏡像源的問題,查看你的maven安裝目錄下的 conf/setting.xml 的鏡像源是否是國(guó)外地址還是說國(guó)內(nèi)的一些鏡像地址,國(guó)內(nèi)的話下載會(huì)穩(wěn)定點(diǎn),如果不是國(guó)內(nèi)的,請(qǐng)改成: 方法二 查看你的pom.xml文件里的spring-boot-maven-plugin部分是否有版本號(hào),如果沒有請(qǐng)加上: 方法

    2024年01月21日
    瀏覽(98)
  • 成功解決 Plugin ‘org.springframework.boot:spring-boot-maven-plugin:‘ not found

    File - Invalidate Caches 先看自己當(dāng)前的版本號(hào) 首先打開 pom.xml 文件進(jìn)行查看 Ctrl+F搜索 spring-boot-starter-parent 找到 artifactIdspring-boot-starter-parent/artifactId 這一行。 下面一行就是版本號(hào)。 拿我的舉例: 復(fù)制 version版本號(hào)/version 然后修改 將上面查找到的版本號(hào)粘貼到報(bào)錯(cuò)的那一行下面

    2024年02月12日
    瀏覽(18)
  • Plugin ‘org.springframework.boot:spring-boot-maven-plugin:‘ not found的解決方法

    Plugin ‘org.springframework.boot:spring-boot-maven-plugin:‘ not found的解決方法

    出現(xiàn)這個(gè)報(bào)錯(cuò)通常是因?yàn)?Maven 無法找到相應(yīng)的 Spring Boot Maven 插件。要解決這個(gè)問題,可以嘗試以下幾種方法: 檢查? pom.xml ?文件中是否正確配置了 Spring Boot Maven 插件。確保以下內(nèi)容存在,并且版本號(hào)是有效的: 確保? groupId 、 artifactId ?和? version ?的值與你使用的 Spring

    2024年03月27日
    瀏覽(146)
  • 解決Plugin ‘org.springframework.boot:spring-boot-maven-plugin:‘ not found的問題

    解決Plugin ‘org.springframework.boot:spring-boot-maven-plugin:‘ not found的問題

    在一個(gè)風(fēng)和日麗的下午,我跟著B站一個(gè)Up主敲一個(gè)SpringBoot+VUE項(xiàng)目,敲著代碼聽著歌,在使用Maven下載相關(guān)包時(shí),突然就報(bào)錯(cuò)啦?。ㄗ约旱囊呀?jīng)解決了,當(dāng)時(shí)沒截圖,只能用一下別人的圖了): 代碼如下: 那問題發(fā)生了能怎么辦呢?百度唄!畢竟面向百度編程時(shí)一個(gè)好習(xí)慣!

    2024年02月16日
    瀏覽(91)
  • Plugin ‘org.springframework.boot:spring-boot-maven-plugin:‘ not found的解決辦法

    Plugin ‘org.springframework.boot:spring-boot-maven-plugin:‘ not found的解決辦法

    ?pom.xml文件中出現(xiàn)這樣的依賴報(bào)錯(cuò) 解決辦法如下: 1、找到這個(gè) spring-boot-starter-parent 依賴 2、將其版本復(fù)制到 spring-boot-maven-plugin 下面 ? ? ?

    2024年02月15日
    瀏覽(99)
  • 已解決org.springframework.boot:spring-boot-maven-plugin:

    已解決org.springframework.boot:spring-boot-maven-plugin: org.springframework.boot:spring-boot-maven-plugin: org.springframework.boot:spring-boot-maven-plugin 是 Spring Boot 提供的一個(gè) Maven 插件,它用于將 Spring Boot 應(yīng)用打包成可執(zhí)行的 JAR 文件或者 WAR 文件。 下滑查看解決方法 該插件提供了許多功能,如將依賴

    2024年02月08日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包