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

使用idea部署springboot項(xiàng)目到docker實(shí)踐

 更新時(shí)間:2026年04月25日 15:49:02   作者:今日相樂,皆當(dāng)喜歡  
這篇文章主要介紹了使用idea部署springboot項(xiàng)目到docker實(shí)踐,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

本篇博客記錄如何用idea里的docker插件去部署springboot項(xiàng)目到docker容器里

相關(guān)Linux的準(zhǔn)備工作

1、配置docker遠(yuǎn)程連接端口

編輯服務(wù)器上的docker.service文件

vi /usr/lib/systemd/system/docker.service

找到如下圖所示的地方,添加以下東西(版本需為centos7以上):

-H tcp://0.0.0.0:2375

如果版本是centos7以下的則直接在這一行的最后添加即可,centos7以下版本添加后的全部代碼為:

ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375

2、保存修改退出,重啟docker

systemctl daemon-reload
service docker restart

3、測試遠(yuǎn)程連接是否正常

curl http://localhost:2375/version

如果出現(xiàn)以下內(nèi)容則能正常連接:

4、開放端口

需要將2375端口進(jìn)行開放才能被遠(yuǎn)程連接,如果是阿里云主機(jī)的話,可以直接登錄阿里云去進(jìn)行開放:

如果是虛擬機(jī)的話,可以用以下命令進(jìn)行開放:

firewall-cmd --zone=public --add-port=2375/tcp --permanent

然后用瀏覽器訪問Linux主機(jī)的IP:2375/version,測試端口是否開放成功

5、在docker里裝MySQL數(shù)據(jù)庫

(如果已經(jīng)裝過則不用)

#拉取MySQL鏡像
docker pull mysql:5.7
#使用鏡像開啟服務(wù)(PASSWORD后面是root用戶的密碼)
docker run -d -p 3308:3306 --name mysql5.7 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7

然后看MySQL是否已啟動:

如果已啟動,則可以用工具去連接,注意端口用3308,因?yàn)镸ySQL的3306端口映射成了3308

6、在docker里裝redis

(如果已經(jīng)裝過則不用)

#拉取redis鏡像
docker pull redis
#啟動redis
#redis-server --appendonly yes:在容器執(zhí)行redis-server啟動命令,并打開redis持久化配置
#requirepass "123456":配置redis連接密碼
docker run --name redis -p 6379:6379 -d --restart=always redis redis-server --appendonly yes --requirepass "123456"

然后看redis是否已啟動:

如果已啟動,則可以用工具去連接,端口用6379

相關(guān)idea的操作

1、下載docker插件

在File-》Setting-》Plugins-》Browse Repositones進(jìn)行下載:

2、使用docker插件連接到Linux上的docker容器

在File-》Settings-》Build, Execution, Deployment-》Docker里用Linux主機(jī)的IP:2375進(jìn)行連接:

連接成功后可以看到docker里所有的鏡像以及容器:

3、在項(xiàng)目中添加一個(gè)docker文件夾并創(chuàng)建Dockerfile文件

Dockerfile文件的內(nèi)容如下:

#這是基礎(chǔ)鏡像
FROM java:8
VOLUME /tmp
#復(fù)制jar包到鏡像中,并且將名字改成app.jar
ADD springboot_project.jar app.jar
#在容器啟動的時(shí)候運(yùn)行命令,來啟動我們的項(xiàng)目(這其實(shí)就是一段Linux命令)
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

建議先登錄Linux用命令拉取java:8基礎(chǔ)鏡像,這樣以免到后面build鏡像的時(shí)候才拉取,造成用時(shí)很長

4、在pom.xml里添加docker相關(guān)配置

<plugin>
    <groupId>com.spotify</groupId>
    <artifactId>docker-maven-plugin</artifactId>
    <version>1.0.0</version>
    <configuration>
        <dockerDirectory>src/main/docker</dockerDirectory>
        <resources>
            <resource>
                <targetPath>/</targetPath>
                <directory>${project.build.directory}</directory>
                <include>${project.build.finalName}.jar</include>
            </resource>
        </resources>
    </configuration>
</plugin>
<plugin>
    <artifactId>maven-antrun-plugin</artifactId>
    <!--綁定mvn package命令,當(dāng)執(zhí)行package這個(gè)maven命令打包項(xiàng)目的同時(shí)
        會把target目錄下的jar包給copy到docker目錄去-->
    <executions>
        <execution>
            <phase>package</phase>
            <configuration>
                <tasks>
                    <copy todir="src/main/docker" file="target/${project.artifactId}.${project.packaging}"></copy>
                </tasks>
            </configuration>
            <goals>
                <goal>run</goal>
            </goals>
        </execution>
    </executions>
</plugin>

5、添加一個(gè)docker配置

具體配置如下:

部分解釋如下:

  • Name:這個(gè)根據(jù)自己的項(xiàng)目進(jìn)行命名
  • Server:這個(gè)就是遠(yuǎn)程的服務(wù)器上的docker
  • Dockerfile:這個(gè)就是自己項(xiàng)目的Dockerfile文件
  • Image Tag:不能重復(fù)根據(jù)自己項(xiàng)目來定義
  • Container name:創(chuàng)建你自己生成容器的名字
  • Bindports:綁定服務(wù)器對外提供的端口和自己項(xiàng)目的端口(阿里云的端口需要在后臺自行管理打開)。格式為[宿主機(jī)端口]:[容器內(nèi)部端口]
  • Bind mounts:靜態(tài)資源存放路徑的映射,根據(jù)自己的項(xiàng)目自行映射。格式為[宿主機(jī)目錄]:[容器內(nèi)部目錄]            
  • Command line options:這是docker內(nèi)部的機(jī)制當(dāng)某個(gè)容器需要其他運(yùn)行容器的時(shí)候需要在這里配置。語法:--link 運(yùn)行容器的名稱: 自己定義的名稱(多個(gè)的容器的話需要使用空格分隔)

6、將項(xiàng)目打成jar包

打包成功后,項(xiàng)目的target目錄跟docker目錄下都有一個(gè)jar包

7、運(yùn)行docker來build鏡像

運(yùn)行之前配置好的Dockerfile,打包鏡像,并將鏡像部署到遠(yuǎn)程docker運(yùn)行:

8、用瀏覽器訪問項(xiàng)目看效果

用瀏覽器訪問Linux主機(jī)IP+端口+項(xiàng)目名,效果如下:

部署期間遇到的問題

項(xiàng)目部署成功后訪問登錄頁面,調(diào)用后端接口生成的圖片驗(yàn)證碼顯示不出來,看日志在報(bào)空指針異常,如下圖:

產(chǎn)生原因

我開始用的jdk基礎(chǔ)鏡像是openjdk:8-jdk-alpine,這個(gè)版本的jdk相比于我們平時(shí)用的jdk是不完整的,有些包是沒有的,所以導(dǎo)致空指針異常的出現(xiàn)

解決方案

將基礎(chǔ)鏡像換成java:8

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • springboot解析自定義yml方式

    springboot解析自定義yml方式

    這篇文章主要介紹了springboot解析自定義yml方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Java通過索引值實(shí)現(xiàn)約瑟夫環(huán)算法

    Java通過索引值實(shí)現(xiàn)約瑟夫環(huán)算法

    這篇文章主要介紹了Java通過索引值實(shí)現(xiàn)約瑟夫環(huán),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • Spring如何解決循環(huán)依賴的問題

    Spring如何解決循環(huán)依賴的問題

    這篇文章主要介紹了Spring是如何解決循環(huán)依賴的問題,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Java定義棧結(jié)構(gòu),并實(shí)現(xiàn)入棧、出棧操作完整示例

    Java定義棧結(jié)構(gòu),并實(shí)現(xiàn)入棧、出棧操作完整示例

    這篇文章主要介紹了Java定義棧結(jié)構(gòu),并實(shí)現(xiàn)入棧、出棧操作,結(jié)合完整實(shí)例形式分析了java數(shù)據(jù)結(jié)構(gòu)中棧的定義、以及入棧、出棧、棧是否為空判斷、棧大小計(jì)算、打印棧元素等相關(guān)操作技巧,需要的朋友可以參考下
    2020-02-02
  • Java編程中使用XFire框架調(diào)用WebService程序接口

    Java編程中使用XFire框架調(diào)用WebService程序接口

    這篇文章主要介紹了Java編程中使用XFire調(diào)用WebService程序接口的方法,WebService是一種跨編程語言和跨操作系統(tǒng)平臺的遠(yuǎn)程調(diào)用技術(shù),需要的朋友可以參考下
    2015-12-12
  • Java中拼接字符串String的N種方法總結(jié)

    Java中拼接字符串String的N種方法總結(jié)

    字符串拼接是我們在Java代碼中比較經(jīng)常要做的事情,就是把多個(gè)字符串拼接到一起,下面這篇文章主要給大家介紹了關(guān)于Java中拼接String的N種方法,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-02-02
  • ReentrantLock從源碼解析Java多線程同步學(xué)習(xí)

    ReentrantLock從源碼解析Java多線程同步學(xué)習(xí)

    這篇文章主要為大家介紹了ReentrantLock從源碼解析Java多線程同步學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • Spring session實(shí)現(xiàn)共享單點(diǎn)登錄案例過程解析

    Spring session實(shí)現(xiàn)共享單點(diǎn)登錄案例過程解析

    這篇文章主要介紹了Spring session實(shí)現(xiàn)共享單點(diǎn)登錄案例過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • log4j2異步Logger(詳解)

    log4j2異步Logger(詳解)

    下面小編就為大家?guī)硪黄猯og4j2異步Logger(詳解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-10-10
  • Java基本數(shù)據(jù)類型族譜與易錯(cuò)點(diǎn)梳理解析

    Java基本數(shù)據(jù)類型族譜與易錯(cuò)點(diǎn)梳理解析

    Java有八大基本類型,很多同學(xué)只對經(jīng)常使用的int類型比較了解。有的同學(xué)是剛從C語言轉(zhuǎn)入Java學(xué)習(xí),誤以為兩者的基本數(shù)據(jù)類型完全相同,這也是大錯(cuò)特錯(cuò)的。今天這本Java基本數(shù)據(jù)類型全解析大字典,可以幫助你直接通過目錄找到你想要了解某一種基本數(shù)據(jù)類型
    2022-01-01

最新評論

政和县| 汝阳县| 肇庆市| 区。| 扎赉特旗| 红安县| 遂溪县| 阳曲县| 太原市| 伊春市| 通榆县| 客服| 平乡县| 扶余县| 鲜城| 什邡市| 奉节县| 会昌县| 松阳县| 津南区| 呈贡县| 宜君县| 贺兰县| 新余市| 托克逊县| 阿坝| 巴里| 新民市| 龙里县| 绥芬河市| 崇文区| 莱西市| 襄汾县| 邛崃市| 调兵山市| 璧山县| 盖州市| 谷城县| 宣汉县| 锦州市| 安吉县|