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

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

 更新時(shí)間: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)建。在打包時(shí),我們可以在IDEA右側(cè)Maven面板的生命周期中直接執(zhí)行package命令。需要注意的是,Maven默認(rèn)的打包方式會(huì)生成一個(gè)僅包含項(xiàng)目自身代碼的標(biāo)準(zhǔn)JAR包,該包不包含項(xiàng)目依賴的第三方庫,因此無法直接運(yùn)行。

boot項(xiàng)目,我們一般會(huì)構(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>

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

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

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

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

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

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

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

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

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

首先,將 Spring Boot JAR 包(例如 myapp.jar)上傳到 Linux 服務(wù)器的某個(gè)目錄,比如 /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同級(jí)目錄下

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

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

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

docker build -t 鏡像名稱 . 

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

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

docker容器化部署

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

docker run -d \                 # -d:讓容器在后臺(tái)以"分離模式"運(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)建容器時(shí)指定鏡像名稱格式為repository:tag,以下面這個(gè)截圖為例,鏡像名稱就是drug_test:latest

驗(yàn)證部署

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

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

到此這篇關(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í)價(jià)值,需要的朋友可以參考下
    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ù)器,你需要?jiǎng)?chuàng)建一個(gè)Docker容器,該容器運(yùn)行一個(gè)適合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)用,可以一條命令啟動(dòng)多個(gè)容器,使用Docker Compose不再需要使用shell腳本來啟動(dòng)容器。接下來通過本文給大家分享docker-compose部署mysql無法訪問的問題,需要的朋友參考下吧
    2018-10-10
  • 低版本Docker升級(jí)高版本Docker的詳細(xì)教程及成功避坑

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

    如果我們使用docker來管理容器,那么保持docker引擎的更新將會(huì)是十分重要的,下面這篇文章主要給大家介紹了關(guān)于低版本Docker升級(jí)高版本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)用程序,無需安裝、跨平臺(tái)且支持實(shí)時(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 通過一個(gè)配置文件來管理多個(gè)Docker容器,非常適合組合使用多個(gè)容器進(jìn)行開發(fā)的場景。興趣的小伙伴們可以參考一下
    2018-07-07

最新評論

湄潭县| 青川县| 淮安市| 闸北区| 长春市| 赫章县| 南乐县| 兴化市| 姚安县| 海林市| 嘉黎县| 阳曲县| 莒南县| 长春市| 临颍县| 古交市| 砀山县| 绵阳市| 玉树县| 韶山市| 壶关县| 旌德县| 老河口市| 宝应县| 福贡县| 栾城县| 长子县| 孟州市| 孟村| 长海县| 建阳市| 五河县| 山东省| 囊谦县| 达尔| 韩城市| 伊宁县| 阿拉善盟| 泊头市| 嘉峪关市| 龙井市|