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

利用Docker容器化部署springboot應(yīng)用(過程詳解)

 更新時間:2025年10月28日 12:09:50   作者:勇往直前plus  
docker可以幫助我們下載應(yīng)用鏡像,創(chuàng)建并運(yùn)行鏡像的容器,從而快速部署應(yīng)用,本文給大家介紹利用docker容器化部署springboot應(yīng)用的過程,感興趣的朋友跟隨小編一起看看吧

前言

在這篇文章中,我將分享如何在Linux環(huán)境下通過Docker部署SpringBoot項(xiàng)目。主要內(nèi)容包括:

  1. 正確構(gòu)建JAR包及其組成結(jié)構(gòu)
  2. 使用Dockerfile構(gòu)建鏡像
  3. 通過Docker容器進(jìn)行項(xiàng)目部署

對docker不熟悉的朋友可以看我這篇docker

構(gòu)建jar包

目前Boot項(xiàng)目通常通過IntelliJ IDEA和Maven進(jìn)行構(gòu)建。在打包時,我們可以在IDEA右側(cè)Maven面板的生命周期中直接執(zhí)行package命令。需要注意的是,Maven默認(rèn)的打包方式會生成一個僅包含項(xiàng)目自身代碼的標(biāo)準(zhǔn)JAR包,該包不包含項(xiàng)目依賴的第三方庫,因此無法直接運(yùn)行。

boot項(xiàng)目,我們一般會構(gòu)建可以直接運(yùn)行、包含所有依賴的jar包,可以直接在pom文件中添加一下配置,指定spring-boot-maven-plugin插件作為jar包構(gòu)建的工具。

  <build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>${spring-boot.version}</version>
            <configuration>
                <mainClass>com.msun.hospitaldictmapping.MsunHospitaldictMappingApplication</mainClass>
            </configuration>
            <executions>
                <execution>
                    <id>repackage</id>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

上述配置有兩個關(guān)鍵配置的作用如下:

配置項(xiàng)作用說明
<mainClass>指定 Spring Boot 應(yīng)用的入口主類,即包含 main方法的類。repackage目標(biāo)會將它寫入 MANIFEST.MF 文件的 Start-Class屬性
<goal>repackage</goal>插件的核心目標(biāo)。它會在 Maven 默認(rèn)打包后,將原始的普通 JAR 包重新打包為包含所有依賴的可執(zhí)行jar包

配置好spring-boot-maven-plugin這個插件后,我們現(xiàn)在執(zhí)行package指令,Spring Boot Maven 插件會按照以下步驟工作
4.1 Maven 默認(rèn)打包??:首先,Maven 的 maven-jar-plugin會執(zhí)行,生成一個普通的、只包含你項(xiàng)目自身編譯代碼的 JAR 包(通常被命名為 your-app-version.jar.original)。
4.2 Repackage(重新打包):接著,spring-boot-maven-plugin的 repackage目標(biāo)會啟動。它會將這個普通的 JAR 包和所有依賴的第三方庫(來自你的本地 Maven 倉庫)一起,重新打包成一個特殊的 ??Fat JAR??(即可執(zhí)行 JAR),并覆蓋掉最初生成的那個 JAR 文件

可執(zhí)行Fat jar組成結(jié)構(gòu)

一個典型的Spring Boot Fat JAR解壓后,我們會看到類似這樣的結(jié)構(gòu)

myapp-1.0.jar
├─ BOOT-INF/
│  ├─ classes/       # 你的應(yīng)用類文件 (.class) 和資源文件 (如 application.yml)
│  └─ lib/           # 所有的第三方依賴 JAR 文件
├─ META-INF/
│  └─ MANIFEST.MF    # 清單文件,這是啟動的關(guān)鍵
└─ org/
   └─ springframework/boot/loader/  # Spring Boot 的啟動器類 (如 JarLauncher)

下面表格詳細(xì)展示了這些內(nèi)部結(jié)構(gòu)存放的文件內(nèi)容

目錄存放內(nèi)容
BOOT-INF/classes/存放我們項(xiàng)目的編譯類文件和資源文件
BOOT-INF/lib/存放所有依賴的 JAR 文件
org/springframework/boot/loader/存放 Spring Boot 自定義的類加載器(如 JarLauncher)
META-INF/MANIFEST.MF清單文件,其中關(guān)鍵屬性 Main-Class指向 類加載器org.springframework.boot.loader.JarLauncher,而 Start-Class指向我們的 com.msun…Application啟動類

這樣,當(dāng)我們運(yùn)行 java -jar your-app.jar時,JVM 會首先啟動 JarLauncher類加載器,由它負(fù)責(zé)加載 BOOT-INF/lib下的所有依賴和 BOOT-INF/classes下的應(yīng)用代碼,最后通過反射調(diào)用 Start-Class指定的Application啟動類 main方法

構(gòu)建springboot應(yīng)用鏡像

打好項(xiàng)目jar包后,接下來我們構(gòu)建應(yīng)用的docker鏡像

首先,將 Spring Boot JAR 包(例如 myapp.jar)上傳到 Linux 服務(wù)器的某個目錄,比如 /home/project。然后在該目錄下創(chuàng)建 Dockerfile文件。

# 進(jìn)入你存放JAR包的目錄
cd /home/project
# 創(chuàng)建Dockerfile
touch Dockerfile

編寫 Dockerfile 文件,構(gòu)建boot應(yīng)用鏡像“圖紙”,將your-project-name.jar替換為我們的實(shí)際jar包名稱即可,注意,要將你的jar包放到Dockerfile同級目錄下

# 使用一個輕量級的Java運(yùn)行環(huán)境作為基礎(chǔ)鏡像
FROM openjdk:8-jre-slim
# 在鏡像內(nèi)設(shè)置一個工作目錄,影響run/cmd/copy等指令
WORKDIR /app
# 將宿主機(jī)的JAR包復(fù)制到鏡像的工作目錄中。注意替換JAR包文件名。由于設(shè)置了工作目錄,實(shí)際復(fù)制到/app/app.jar
COPY your-project-name.jar app.jar 
# 聲明容器運(yùn)行時需要暴露的端口(與你的Spring Boot應(yīng)用端口一致)
EXPOSE 8080
# 指定容器啟動時運(yùn)行的命令
ENTRYPOINT ["java", "-jar", "app.jar"]

openjdk:8-jre-slim就是一個??專為運(yùn)行Java程序而優(yōu)化的、輕量且高效的java程序運(yùn)行的基礎(chǔ)鏡像,提供了java程序運(yùn)行所需的最小環(huán)境,包含了一個非常輕量級的Linux發(fā)行版-Debian的“slim”系統(tǒng)、java8運(yùn)行時環(huán)境,即 ??OpenJDK 8的JRE(JVM+核心類庫)

最后,執(zhí)行下面docker命令構(gòu)建我們的boot應(yīng)用鏡像。

docker build -t 鏡像名稱 . 

注意后面有個.,意思是從當(dāng)前目錄尋找Dockerfile文件,構(gòu)建鏡像。
執(zhí)行命令后,如果控制臺最后出現(xiàn)success標(biāo)識,說明鏡像分層構(gòu)建成功

此時,我們執(zhí)行docker images就可以看到我們創(chuàng)建的鏡像

docker容器化部署

鏡像構(gòu)建完成后,我們直接通過docker進(jìn)行容器化部署即可,直接使用 docker run命令啟動一個容器來啟動應(yīng)用

docker run -d \                 # -d:讓容器在后臺以"分離模式"運(yùn)行
-p 8080:8080 \                  # -p 8080:8080:將??宿主機(jī)的8080端口??映射到??容器的8080端口??。如果你的應(yīng)用端口不是8080,請相應(yīng)調(diào)整
--name my-app-container\        # 為容器指定名稱
my-spring-boot-app:1.0         # 我們的應(yīng)用鏡像名稱

這里要注意的是,最后指定的鏡像名稱,我們可以通過docker images 查詢,創(chuàng)建容器時指定鏡像名稱格式為repository:tag,以下面這個截圖為例,鏡像名稱就是drug_test:latest

驗(yàn)證部署

容器啟動后,可以通過以下方式驗(yàn)證應(yīng)用是否成功運(yùn)行:

  • 查看容器狀態(tài)??:使用 docker ps 命令查看容器是否在運(yùn)行
  • ??查看日志??:如果應(yīng)用無法訪問,使用 docker logs -f 容器名 命令查看啟動日志,這通常是排查問題最快的方法

到此這篇關(guān)于如何利用docker部署springboot應(yīng)用的文章就介紹到這了,更多相關(guān)docker部署springboot內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Mac系統(tǒng)上用Docker搭建lamp環(huán)境

    Mac系統(tǒng)上用Docker搭建lamp環(huán)境

    這篇文章主要給大家介紹了Mac系統(tǒng)上用Docker如何搭建lamp環(huán)境,文章給大家介紹的很詳細(xì),有需要的朋友們可以參考借鑒,下面來一起看看吧。
    2016-12-12
  • Docker 容器操作指令匯總詳解

    Docker 容器操作指令匯總詳解

    這篇文章主要介紹了Docker 容器操作指令匯總詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-10-10
  • dockerfile部署前端vue打包的ist文件實(shí)戰(zhàn)

    dockerfile部署前端vue打包的ist文件實(shí)戰(zhàn)

    這篇文章主要為大家介紹了dockerfile部署前端vue打包的ist文件實(shí)戰(zhàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • docker環(huán)境部署domino的詳細(xì)過程

    docker環(huán)境部署domino的詳細(xì)過程

    要在Docker容器中運(yùn)行Domino服務(wù)器,你需要創(chuàng)建一個Docker容器,該容器運(yùn)行一個適合Domino服務(wù)器運(yùn)行的操作系統(tǒng)和必要的軟件,本文給大家介紹docker環(huán)境部署domino的詳細(xì)過程,感興趣的朋友跟隨小編一起看看吧
    2026-04-04
  • 淺析docker-compose部署mysql無法訪問的問題

    淺析docker-compose部署mysql無法訪問的問題

    Compose 是 Docker 容器進(jìn)行編排的工具,定義和運(yùn)行多容器的應(yīng)用,可以一條命令啟動多個容器,使用Docker Compose不再需要使用shell腳本來啟動容器。接下來通過本文給大家分享docker-compose部署mysql無法訪問的問題,需要的朋友參考下吧
    2018-10-10
  • 低版本Docker升級高版本Docker的詳細(xì)教程及成功避坑

    低版本Docker升級高版本Docker的詳細(xì)教程及成功避坑

    如果我們使用docker來管理容器,那么保持docker引擎的更新將會是十分重要的,下面這篇文章主要給大家介紹了關(guān)于低版本Docker升級高版本Docker的詳細(xì)教程及成功避坑,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • Docker swarm集群部署過程詳解(包含compose.yml文件詳情)

    Docker swarm集群部署過程詳解(包含compose.yml文件詳情)

    Docker Swarm是Docker的集群管理工具,支持服務(wù)部署、副本調(diào)度、Stack管理(基于Compose文件),包含初始化集群、節(jié)點(diǎn)添加、服務(wù)更新、資源清理等操作,確保容器化應(yīng)用的高效運(yùn)行,本文給大家介紹Docker swarm集群部署包含compose.yml文件詳情,感興趣的朋友一起看看吧
    2025-07-07
  • Docker部署Web在線版的PPT應(yīng)用程序PPTist

    Docker部署Web在線版的PPT應(yīng)用程序PPTist

    PPTist作為一款開源的Web應(yīng)用程序,無需安裝、跨平臺且支持實(shí)時協(xié)作的幻燈片制作,本文介紹了如何使用Docker部署Web在線版的PPTist,包括本地環(huán)境規(guī)劃、檢查、下載PPTist鏡像、部署PPTist應(yīng)用以及訪問PPTist首頁的步驟
    2025-02-02
  • docker清空日志文件幾種方法實(shí)現(xiàn)

    docker清空日志文件幾種方法實(shí)現(xiàn)

    docker 用久了 日志一大堆,很占用空間,不用的日志可以清理掉了,下面這篇文章主要介紹了docker清空日志文件幾種方法實(shí)現(xiàn)的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-11-11
  • 詳解Docker之Compose服務(wù)編排

    詳解Docker之Compose服務(wù)編排

    Compose是Docker的服務(wù)編排工具,主要用來構(gòu)建基于Docker的復(fù)雜應(yīng)用,Compose 通過一個配置文件來管理多個Docker容器,非常適合組合使用多個容器進(jìn)行開發(fā)的場景。興趣的小伙伴們可以參考一下
    2018-07-07

最新評論

中宁县| 林口县| 威宁| 昌乐县| 太仓市| 长宁县| 博湖县| 孝义市| 原阳县| 黔南| 雷山县| 宁陕县| 乐山市| 诸城市| 鸡东县| 湟中县| 绥化市| 志丹县| 东阳市| 湘潭市| 石渠县| 佛学| 双峰县| 东城区| 桦南县| 五家渠市| 漳浦县| 宝山区| 营口市| 精河县| 甘谷县| 柳州市| 河曲县| 秭归县| 泾阳县| 南昌县| 晴隆县| 池州市| 郧西县| 龙山县| 雷州市|