最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java(SpringBoot)項目打包(構建)成Docker鏡像的幾種常見方式

 更新時間:2023年12月14日 09:58:27   作者:小簡(JanYork)  
在對Spring Boot應用程序進行Docker化時,為應用程序選擇正確的基礎鏡像非常重要,下面這篇文章主要給大家介紹了關于Java(SpringBoot)項目打包(構建)成Docker鏡像的幾種常見方式,需要的朋友可以參考下

前置說明

  • 最為原始的打包方式
  • spring-boot-maven-plugin插件
  • jib-maven-plugin插件
  • dockerfle-maven-plugin插件

最為原始的方式

也就是使用Docker的打包命令去打包,麻煩,我這里不多說。

spring-boot-maven-plugin插件打包

SpringBoot自己內置了一個Docker鏡像打包工具,在spring-boot-starter-parent中,我們無需多余的設置。

優(yōu)點:不需要寫DockerFile,Spring建議的安全、內存、性能等問題都不需要管。

jib-maven-plugin插件

來自Google的一款打包插件。

優(yōu)點:不需要本地安裝Docker,也不需要寫DockerFile,Jib 可以直接推送到指定的Docker倉庫。

dockerfle-maven-plugin插件

需要寫DockerFile也需要本地Docker環(huán)境,但是恰恰是最好用的,最穩(wěn)定的,最自由把控的。

優(yōu)點:穩(wěn)定,不受網絡限制,DockerFile自己寫,自由度很高,想怎么改怎么改,個人推薦這個。

SpringBoot打包鏡像

我們無需引入依賴,SpringBoot自帶了。

打包命令:

mvn spring-boot:build-image

但是我不喜歡用命令,IDEA都給你可視化了,何必敲命令呢?而且命令還需要設置Maven環(huán)境變量。

就和打JAR包一樣,我們點一下就可以。

但是SpringBoot的打包會因為網絡(不通暢),而導致失敗。

打包完成是這樣:

我們去查看本地鏡像有沒有。

運行測試一下。

說實話我運行失敗了,因為我項目里面有一下東西它不好搞,比如微信支付的證書文件和KEY文件,一般的SpringBoot項目可以,但是我這個恰恰不行,我需要自己寫DockerFile去創(chuàng)建卷映射才好。

JIB打包鏡像

配置插件依賴:

        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.3.7.RELEASE</version>
                <configuration>
                    <mainClass>com.toemail.smtp.ToEmailApplication</mainClass>
                </configuration>
                <executions>
                    <execution>
                        <id>repackage</id>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>com.google.cloud.tools</groupId>
                <artifactId>jib-maven-plugin</artifactId>
                <version>3.3.1</version>
                <configuration>
                    <!--from節(jié)點用來設置鏡像的基礎鏡像,相當于Docerkfile中的FROM關鍵字-->
                    <from>
                        <!--基礎鏡像名稱(建議使用國內公開鏡像,下載速度快,更穩(wěn)定) -->
                        <image>java:8u172-jre-alpine</image>
                    </from>
                    <to>
                        <!--鏡像名稱和tag,使用了mvn內置變量${project.version},表示當前工程的version-->
                        <image>demo:${project.version}</image>
                    </to>
                    <!--容器相關的屬性-->
                    <container>
                        <!--jvm內存參數-->
                        <jvmFlags>
                            <jvmFlag>-Xms4g</jvmFlag>
                            <jvmFlag>-Xmx4g</jvmFlag>
                        </jvmFlags>
                        <!--要暴露的端口-->
                        <ports>
                            <port>8899</port>
                        </ports>
                    </container>
                </configuration>
            </plugin>

我這里用的目前最新版本。

另外,很多配置我都寫了注釋,如果你想了解更多可以查一下JIB的相關文檔。

命令

mvn compile com.google.cloud.tools:jib-maven-plugin:2.3.0:dockerBuild

IDEA

報錯

如果出現這錯誤:

就添加以下配置:

還是報錯

好像是它這個官方倉庫需要認證登錄,我靠,我真不喜歡這破插件,垃圾(暗暗罵道)。

突然解決

這個鏡像,需要指定具體倉庫URL地址的。

但是我現在這個不行,所以我要換一個阿里的倉庫。

改成了這樣:

<to>
  <image>registry.cn-qingdao.aliyuncs.com/jibjava/jibfirst</image>
</to>

阿里云有時候私有倉庫需要密碼,也可以換成其他私有倉庫。

		<from>
            <image>registry.cn-qingdao.aliyuncs.com/jibjava/jibfirst</image>
            <auth>
              <username>阿里云賬號</username>
              <password>阿里云密碼</password>
            </auth>
          </from>

XML標簽詳解

from:拉取的鏡像的配置,默認為gcr.io/distroless/java
to:要生成的鏡像的配置
image:拉取或生成的鏡像名稱
auth: 認證信息,分別為用戶名和密碼
container: 容器的屬性
jvmFlgs: JVM 容器的參數,和 Dockerfile 的 ENTRYPOINT作用相同
mainClass: 啟動類限定名
args: main 方法的傳入參數
ports: 容器暴露的端口,和 Dockerfile 的EXPOSE作用相同

成功

DockerFileMaven打包

DockerFile

FROM c9katayama/java8:latest
# 創(chuàng)建目錄
RUN mkdir -p /dashboard
# 拷貝文件
COPY dashboard.jar /dashboard/dashboard.jar
# 暴露端口
EXPOSE 8099
# 啟動命令
CMD ["java", "-jar", "/dashboard/dashboard.jar"]

DockerFile不多說,請自行學習。

依賴展示:

			<plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>0.4.11</version>
                <dependencies>
                    <dependency>
                        <groupId>javax.activation</groupId>
                        <artifactId>javax.activation-api</artifactId>
                        <version>1.2.0</version>
                        <scope>compile</scope>
                    </dependency>
                </dependencies>
                <configuration>
                    <imageName>${docker.image.prefix}/${project.artifactId}</imageName>
                    <dockerDirectory>src/main/docker</dockerDirectory>
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <directory>${project.build.directory}</directory>
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                    <imageTags>
                        <imageTag>${project.version}</imageTag>
                        <imageTag>latest</imageTag>
                    </imageTags>
                </configuration>
            </plugin>

但是這一段插件的XML別用,因為這是rocketmq可視化控制臺的官方寫的,你可以自己配置。

正常的一般插件的XML就這樣:

		<plugin>
            <groupId>com.spotify</groupId>
            <artifactId>docker-maven-plugin</artifactId>
            <version>1.0.0</version>
            <configuration>
                <imageName>${project.artifactId}:${project.version}</imageName>
                <!-- 指定 Dockerfile 路徑-->
                <dockerDirectory>${basedir}/docker</dockerDirectory> 
                <!-- 這里是復制 jar 包到 docker 容器指定目錄配置,也可以寫到 Docokerfile 中 -->
                <resources>
                    <resource>
                        <targetPath>/ROOT</targetPath>
                        <directory>${project.build.directory}</directory>
                        <include>${project.build.finalName}.jar</include>
                    </resource>
                </resources>
            </configuration>
        </plugin>

其余配置可以自行瀏覽器搜索一下:docker-maven-plugin配置項

構建命令

mvn package

嘗試打包

我這里直接IDEA點擊打包,討厭命令。

注意:需要本地有Docker,并且開啟遠程連接,WindowsDocker安裝小簡上一篇文章寫過的,可以看看,Linux的沒寫。

好用多了,一次成功。

還是這個最好用,推薦!?。?/p>

總結

小簡選擇的是最后一個,第一個也還行吧,但是Google那個不需要本地有Docker環(huán)境,第一個我還是開著魔法(梯子)打包的,最后一個挺好的。

到此這篇關于Java(SpringBoot)項目打包(構建)成Docker鏡像的幾種常見方式的文章就介紹到這了,更多相關SpringBoot打包成Docker鏡像內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 簡介Java的Hibernate框架中的Session和持久化類

    簡介Java的Hibernate框架中的Session和持久化類

    這篇文章主要介紹了Java的Hibernate框架中的Session和持久化類,Hibernate是Java的SSH三大web開發(fā)框架之一,需要的朋友可以參考下
    2015-12-12
  • lambda表達式與傳統(tǒng)接口函數實現方式對比詳解

    lambda表達式與傳統(tǒng)接口函數實現方式對比詳解

    這篇文章主要為大家介紹了lambda表達式與傳統(tǒng)接口函數實現方式對比詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家度偶多進步早日升職加薪
    2022-03-03
  • Java生成含字母和數字的6位隨機字符串

    Java生成含字母和數字的6位隨機字符串

    這篇文章主要為大家詳細介紹了Java生成含字母和數字的6位隨機字符串的相關資料,供大家參考,感興趣的朋友可以參考一下
    2016-05-05
  • 探索HttpClient中的close方法及其對連接的影響

    探索HttpClient中的close方法及其對連接的影響

    這篇文章主要為大家介紹了HttpClient中的close方法及其對連接的影響探索分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-10-10
  • Java如何連接數據庫圖文教程

    Java如何連接數據庫圖文教程

    關于java數據庫的文章早已是非常多了,本文是對我個人過往學習java數據庫,理解及應用java數據庫的一個總結,下面這篇文章主要給大家介紹了關于Java如何連接數據庫的相關資料,需要的朋友可以參考下
    2023-04-04
  • Java中的信息摘要算法MessageDigest類用法詳解

    Java中的信息摘要算法MessageDigest類用法詳解

    這篇文章主要介紹了Java中的信息摘要算法MessageDigest類用法詳解,java.security.MessageDigest類為應用程序提供信息摘要算法的功能,如MD5或SHA-1或SHA-256算法,信息摘要是安全的單向哈希函數,它接收任意大小的數據,并輸出固定長度的哈希值,需要的朋友可以參考下
    2024-01-01
  • Java Spring-Cache key配置注意事項介紹

    Java Spring-Cache key配置注意事項介紹

    本文主要對java spring-cache key配置注意事項進行了介紹,小編覺得還是挺不錯的,這里分享給大家,供需要的朋友參考。
    2017-10-10
  • springboot全局日期格式化的兩種方式

    springboot全局日期格式化的兩種方式

    這篇文章主要介紹了springboot全局日期格式化的兩種方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09
  • java finally塊執(zhí)行時機全面分析

    java finally塊執(zhí)行時機全面分析

    下面小編就為大家?guī)硪黄猨ava finally塊執(zhí)行時機全面分析。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-08-08
  • 基于SpringMVC入門案例及講解

    基于SpringMVC入門案例及講解

    這篇文章主要介紹了基于SpringMVC入門案例及講解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01

最新評論

湖南省| 海口市| 永泰县| 沅江市| 兴化市| 建德市| 灵寿县| 固镇县| 镇坪县| 滨州市| 古丈县| 西和县| 平和县| 娄底市| 松滋市| 北海市| 益阳市| 桂林市| 临湘市| 冷水江市| 子长县| 扎赉特旗| 大渡口区| 武邑县| 辽宁省| 新沂市| 喀喇沁旗| 宝坻区| 大理市| 长武县| 永平县| 大悟县| 芦溪县| 利辛县| 全南县| 黎川县| 芜湖县| 朝阳区| 龙川县| 图们市| 游戏|