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

SpringBoot項(xiàng)目多模塊打包部署Docker實(shí)戰(zhàn)

這篇具有很好參考價(jià)值的文章主要介紹了SpringBoot項(xiàng)目多模塊打包部署Docker實(shí)戰(zhàn)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

前言

我們好多程序員都只關(guān)注功能代碼的編寫(xiě),在一些運(yùn)維工作上則顯得略有不足。這篇文章通過(guò)介紹最常見(jiàn)的Maven管理的Spring Boot項(xiàng)目多模塊打包部署Docker來(lái)介紹一下項(xiàng)目部署過(guò)程中操作流程和幾個(gè)需要注意的點(diǎn)。文章假設(shè)讀者有前面提到的技術(shù)點(diǎn)的前置知識(shí),不過(guò)沒(méi)有也沒(méi)關(guān)系,所涉及到的點(diǎn)都比較簡(jiǎn)單。

Maven管理多模塊項(xiàng)目

在項(xiàng)目過(guò)大后都會(huì)對(duì)項(xiàng)目通過(guò)多模塊的方式進(jìn)行拆分,下面來(lái)說(shuō)一下拆分多模塊的操作步驟。

首先看一下現(xiàn)在的目錄結(jié)構(gòu)。注意現(xiàn)在的項(xiàng)目是使用gradle進(jìn)行構(gòu)建的,隨后我會(huì)把它轉(zhuǎn)為使用maven構(gòu)建。:
SpringBoot項(xiàng)目多模塊打包部署Docker實(shí)戰(zhàn),spring boot,docker,maven
接下來(lái)我們使項(xiàng)目變成父子模塊的結(jié)構(gòu)。首先我們新建一個(gè)module,命名為demo-web。該模塊用來(lái)存放web相關(guān)功能的代碼:
SpringBoot項(xiàng)目多模塊打包部署Docker實(shí)戰(zhàn),spring boot,docker,maven
SpringBoot項(xiàng)目多模塊打包部署Docker實(shí)戰(zhàn),spring boot,docker,maven
現(xiàn)在的機(jī)構(gòu)變成了這樣:
SpringBoot項(xiàng)目多模塊打包部署Docker實(shí)戰(zhàn),spring boot,docker,maven
接下來(lái)以類(lèi)似的方式進(jìn)行整理,整理過(guò)后的項(xiàng)目結(jié)構(gòu)是下面這樣的。來(lái)介紹一下各個(gè)模塊的功能:common用于存放公共的方法,可以是各種工具類(lèi)的集合。main模塊放spring boot的啟動(dòng)類(lèi)和一些configure,比如我們將common模塊中的普通對(duì)象聲明為bean。service存放了我們的service層代碼。web模塊中主要是controller。
SpringBoot項(xiàng)目多模塊打包部署Docker實(shí)戰(zhàn),spring boot,docker,maven

pom文件

接下來(lái)看各個(gè)模塊的pom文件是如何配置的,以及它們各自的作用。

這是父模塊的pom文件:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.1.1</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>pom</packaging>
    <name>demo</name>
    <description>demo</description>
    <modules>
        <module>demo-web</module>
        <module>demo-common</module>
        <module>demo-service</module>
        <module>demo-main</module>
    </modules>
    <properties>
        <java.version>17</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

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

</project>

其中modules標(biāo)簽內(nèi)的內(nèi)容是我們的各個(gè)子模塊。由于這個(gè)demo項(xiàng)目是使用Spring Initializr自動(dòng)生成的,它給出的是parent是Spring Boot Starter,這一塊暫時(shí)先不要改動(dòng)。build標(biāo)簽里使用了spring boot的maven插件,這個(gè)插件會(huì)在我們使用maven打包時(shí)打包成一個(gè)jar包,一個(gè)jar包運(yùn)行也是spring boot的精髓所在。也就是說(shuō),使用spring boot maven plugin打好的jar包,只需要一個(gè)命令java -jar yourjar.jar就可以運(yùn)行了。

我們?cè)偈崂硪槐楦鱾€(gè)模塊之間的關(guān)系:common是各個(gè)模塊所依賴(lài)的工具模塊,它里邊的實(shí)現(xiàn)可以不依賴(lài)spring,因此不需要使用上面的打包工具,也不用依賴(lài)于父模塊來(lái)獲得父級(jí)依賴(lài)(主要是spring)。service模塊是服務(wù)層代碼所在的模塊,需要依賴(lài)父模塊以繼承spring的依賴(lài)。web模塊存放的是controller相關(guān)的實(shí)現(xiàn),當(dāng)然也需要依賴(lài)父模塊,由于需要使用服務(wù)層代碼,當(dāng)然也需要依賴(lài)service模塊。main模塊是spring boot啟動(dòng)類(lèi)所在的模塊,前面提到的打成一個(gè)jar包實(shí)際上就是去jar里尋找這個(gè)啟動(dòng)類(lèi)。再由啟動(dòng)類(lèi)帶動(dòng)其余的service模塊、web模塊運(yùn)行。因此main塊還需要依賴(lài)serviceweb模塊。

除此之外,還需要注意的一個(gè)點(diǎn)是,由于我們讓serviceweb繼承了父模塊,因此也會(huì)繼承了父模塊的打包組件spring boot maven plugin,在打包時(shí)也會(huì)把這兩個(gè)模塊打成spring boot格式的jar包,而這種格式需要有一個(gè)主類(lèi)作為入口(就是我們的spring boot啟動(dòng)類(lèi)),但是我們這兩個(gè)都是服務(wù)模塊并沒(méi)有啊。因此還需要在打包的時(shí)候做一些調(diào)整,使用下面的build標(biāo)簽來(lái)跳過(guò)打可執(zhí)行jar包的步驟,讓這兩個(gè)模塊打出來(lái)的是普通的jar包。

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

Docker部署

在部署之前確保你有docker環(huán)境,這里就不再贅述了。我們的想法是使用docker file制作一個(gè)鏡像,然后在鏡像中運(yùn)行我們的自己的多模塊項(xiàng)目。前邊提到,只需要將main模塊打好的jar包使用java -jar命令執(zhí)行一下就能啟動(dòng)了。因此把這個(gè)打好的jar包放到鏡像里就可以了。西面是docker file的編寫(xiě):

# 使用基礎(chǔ)的Java鏡像
FROM openjdk:latest

# 將構(gòu)建好的Spring Boot JAR文件復(fù)制到容器中
COPY demo-main/target/demo-main-0.0.1-SNAPSHOT.jar /usr/src/myapp/app.jar

# 設(shè)置工作目錄
WORKDIR /usr/src/myapp

# 暴露 Spring Boot 應(yīng)用程序的端口
EXPOSE 8080

# 運(yùn)行 Spring Boot 應(yīng)用程序
CMD ["java", "-jar", "app.jar"]

寫(xiě)完docker file后運(yùn)行下面命令來(lái)制作鏡像:sudo docker build -t demoApp . 不要忘記最后有個(gè).。

鏡像制作好后使用下面命令來(lái)后臺(tái)啟動(dòng)容器并將端口映射為8080:sudo docker -d demoApp -p 8080:8080。現(xiàn)在就可以在瀏覽器中訪問(wèn)你部署好的項(xiàng)目了。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-541959.html

到了這里,關(guān)于SpringBoot項(xiàng)目多模塊打包部署Docker實(shí)戰(zhàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(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)文章

  • springboot多模塊項(xiàng)目打包

    springboot多模塊項(xiàng)目打包

    例如有一個(gè)父項(xiàng)目,其中有三個(gè)模塊,blog-api模塊,blog-admin模塊,blog-framework模塊, 其中blog-api模塊用于博客程序,blog-admin模塊用與后臺(tái)管理,blog-framework為公共模塊 ? 父項(xiàng)目pom.xml文件 1.對(duì)子模塊進(jìn)行引入,并且配置打包方式為pom ?2.使用maven方式打包 ?子模塊?pom.xml 設(shè)置打

    2024年02月13日
    瀏覽(17)
  • Spring Boot多模塊項(xiàng)目打包

    Spring Boot多模塊項(xiàng)目打包

    例如父項(xiàng)目 build_test 下面有三個(gè)子模塊,一個(gè)是common模塊 一個(gè)是a模塊,一個(gè)b模塊;其中common是公共模塊,a和b都依賴(lài)于公共模塊common,我現(xiàn)在想把a(bǔ)和b模塊打包成jar包。 創(chuàng)建父工程 創(chuàng)建3個(gè)子模塊,分別是common和a和b模塊 鼠標(biāo)右擊紅框位置 選New 再選Module,鼠標(biāo)左鍵點(diǎn)一下, 同

    2024年02月09日
    瀏覽(24)
  • 關(guān)于打包多模塊SpringBoot項(xiàng)目并通過(guò)寶塔上傳服務(wù)器

    關(guān)于打包多模塊SpringBoot項(xiàng)目并通過(guò)寶塔上傳服務(wù)器

    打包 —— 如何打包多模塊項(xiàng)目,參考b站up主:[喜歡編程的代先生] 的視頻 總結(jié):1. 對(duì)著視頻里看一下父模塊和各個(gè)子模塊pom.xml文件關(guān)于打包工具的依賴(lài)是否正確。2. 從最底層開(kāi)始打包,逐層向上,最后再合并打包。 部署 —— 打包好后,先把jar包上傳到文件夾 運(yùn)用java項(xiàng)目

    2024年02月11日
    瀏覽(17)
  • Docker實(shí)戰(zhàn)筆記 二 Springboot Idea 插件打包

    Docker實(shí)戰(zhàn)筆記 二 Springboot Idea 插件打包

    1.上傳springboot的jar 2.編輯Dockerfile 3.制作Docker鏡像 4.查看并啟動(dòng)容器 5.啟動(dòng)容器 6.調(diào)用服務(wù)接口http://ip:9666/login 查看日志 已打印登錄信息,啟動(dòng)成功完成。 首先把docker服務(wù)的遠(yuǎn)程端口打開(kāi) 其他擴(kuò)展知識(shí) docker-compose https://blog.csdn.net/renfng/article/details/128974138 Docker實(shí)戰(zhàn)筆記 三 D

    2024年02月04日
    瀏覽(20)
  • Docker打包及部署項(xiàng)目

    Docker打包及部署項(xiàng)目

    Docker 是一個(gè)開(kāi)源的容器化平臺(tái),用于構(gòu)建、部署和運(yùn)行應(yīng)用程序。它使開(kāi)發(fā)人員能夠?qū)④浖捌渌幸蕾?lài)項(xiàng)打包到一個(gè)稱(chēng)為容器的標(biāo)準(zhǔn)單元中。這個(gè)容器可以在任何支持 Docker 的環(huán)境中運(yùn)行,無(wú)論是開(kāi)發(fā)人員的個(gè)人計(jì)算機(jī)、測(cè)試環(huán)境還是生產(chǎn)服務(wù)器。 通過(guò)使用 Docker,開(kāi)發(fā)人

    2024年02月13日
    瀏覽(23)
  • SpringBoot項(xiàng)目打包Docker鏡像

    SpringBoot項(xiàng)目打包Docker鏡像

    1、創(chuàng)建springboot項(xiàng)目,并在根目錄新建Dockerfile文件 Dockerfile文件內(nèi)容 ?進(jìn)到項(xiàng)目根目錄打包 ?構(gòu)建鏡像(不要忽略最后的一個(gè)點(diǎn)) 查看鏡像列表 啟動(dòng)

    2024年02月16日
    瀏覽(27)
  • 【springboot開(kāi)發(fā)】項(xiàng)目打包、發(fā)布和部署

    【springboot開(kāi)發(fā)】項(xiàng)目打包、發(fā)布和部署

    前言:可以打包成JAR包獨(dú)立運(yùn)行,也可以打包成WAR包部署到Tomcat容器中,若涉及到大規(guī)模部署,Jenkins成為最佳選擇之一。本文主要介紹Maven項(xiàng)目的打包、發(fā)布和部署。 Maven默認(rèn)會(huì)打包jar包,也可以在pom.xml中指定打包方法: 主要是最后一行。 然后在項(xiàng)目根目錄下的控制臺(tái)執(zhí)行

    2024年02月09日
    瀏覽(26)
  • Dockerfile中編譯、打包、部署spring boot項(xiàng)目

    ????????Dockerfile是自動(dòng)構(gòu)建docker鏡像的配置文件,將鏡像構(gòu)建過(guò)程通過(guò)指令的方式定義在Dockerfile中。配合docker build命令行可以實(shí)現(xiàn)自動(dòng)化的Docker鏡像的構(gòu)建。 ????????我們?cè)趯W(xué)習(xí)一門(mén)語(yǔ)言或文檔語(yǔ)法的時(shí)候,最快的學(xué)習(xí)方式就是看別人是怎么寫(xiě)的。這里這個(gè)“「別人

    2024年02月09日
    瀏覽(92)
  • Spring3新特性:Graalvm打包Springboot+Mybatis;Graalvm打包成Docker

    Spring3新特性:Graalvm打包Springboot+Mybatis;Graalvm打包成Docker

    項(xiàng)目源代碼 https://github.com/cmdch2017/SpringNative_Graalvm_Mybatis 安裝graalvm與配置環(huán)境 首先安裝步驟參考這篇博客 https://blog.csdn.net/weixin_38943666/article/details/129505945 其次如何處理反射 https://blog.csdn.net/qq_32740973/article/details/131799510 第一步,直接拷貝我項(xiàng)目中的config文件夾到你的項(xiàng)目 第

    2024年01月19日
    瀏覽(17)
  • SpringBoot項(xiàng)目如何打包成docker鏡像?

    SpringBoot項(xiàng)目如何打包成docker鏡像?

    將Spring Boot項(xiàng)目打包成Docker鏡像的過(guò)程可以分為以下幾個(gè)步驟: 1. 創(chuàng)建Dockerfile 首先,你需要在Spring Boot項(xiàng)目的根目錄下創(chuàng)建一個(gè) Dockerfile 。這個(gè)文件包含了Docker鏡像構(gòu)建的所有指令。一個(gè)基本的 Dockerfile 可能看起來(lái)像這樣: 確保替換 my-spring-boot-app-1.0.0.jar 為你的Spring Boot應(yīng)用

    2024年02月21日
    瀏覽(24)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包