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

IDEA快速部署Spring?Boot?項(xiàng)目到Docker的實(shí)現(xiàn)方法

 更新時(shí)間:2023年07月28日 08:36:39   作者:結(jié)構(gòu)化思維wz  
本文主要介紹了IDEA快速部署Spring?Boot?項(xiàng)目到Docker的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

一、IDEA 連接 Docker

我們通常使用TCP的方式連接Docker,所以我們需要配置Docker并開放端口,如果是本地虛擬機(jī),可以簡(jiǎn)單使用http的方式進(jìn)行連接(不建議),如果你是遠(yuǎn)程服務(wù)器,請(qǐng)務(wù)必采用安全的連接方式(https);

自己的虛擬機(jī)

如果是自己的虛擬機(jī),可以不需要?jiǎng)?chuàng)建CA證書??梢允褂?code>http://ip:端口號(hào)的形式連接。

:one: 編輯docker.service文件

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

找到 [Service] 節(jié)點(diǎn),修改 ExecStart 屬性,增加 -H tcp://0.0.0.0:2375

img

這樣相當(dāng)于對(duì)外開放的是 2375 端口,當(dāng)然也可以根據(jù)自己情況修改成其他的。

:two: 重新加載Docker配置生效

systemctl daemon-reload 
systemctl restart docker 

:three: 測(cè)試是否能訪問(wèn)

#瀏覽器訪問(wèn)
ip:2375/vsersion

如果訪問(wèn)成功證明已配置成功。

如果無(wú)妨訪問(wèn),請(qǐng)檢查防火墻是否開放2375端口:

#查看防火墻開放列表
firewall-cmd --list-ports
#增加2375端口
firewall-cmd --zone=public --add-port=2375/tcp --permanent
#重啟防火墻
firewall-cmd --reload

:four: 通過(guò)IDEA連接

image-20230328160853784

遠(yuǎn)程服務(wù)器

**如果是遠(yuǎn)程服務(wù)器,一定要?jiǎng)?chuàng)建CA證書。**使用https://ip:端口號(hào)的形式連接。(否則你的Docekr任何人都可以推送鏡像,分分鐘取挖礦)

下面我將命令都抽離出來(lái),方便運(yùn)行。[ip]替換為你的服務(wù)器ip

(如果想看更詳細(xì)的分步驟運(yùn)行,請(qǐng)看[這篇文章](Docker開啟遠(yuǎn)程安全訪問(wèn)),但是注意其中5.2章節(jié)的一個(gè)錯(cuò)誤:extfile.cnf 這里不能用官方給的,不要DNS)

#1、創(chuàng)建CA私鑰和CA公鑰
mkdir -p /usr/local/ca
cd /usr/local/ca
#2.然后在Docker守護(hù)程序的主機(jī)上,生成CA私鑰和公鑰:執(zhí)行完后,這里會(huì)要我們輸入密碼,請(qǐng)牢記,例如我這里輸入wang123
openssl genrsa -aes256 -out ca-key.pem 4096
#3.補(bǔ)全CA證書信息,執(zhí)行后需要輸入,訪問(wèn)密碼、國(guó)家、省、市、組織名稱、單位名稱、CommonName、郵箱等
openssl req -new -x509 -days 365 -key ca-key.pem -sha256 -out ca.pem
#4.生成server-key.pem
openssl genrsa -out server-key.pem 4096
#5.用CA簽署公鑰:
openssl req -subj "/CN=[ip]" -sha256 -new -key server-key.pem -out server.csr
#6.匹配白名單,允許指定的ip可以連接到服務(wù)器中的docker,這里允許所有攜帶ca的ip
echo subjectAltName = IP:[ip],IP:0.0.0.0 >> extfile.cnf
#7.將Docker守護(hù)程序密鑰的擴(kuò)展使用屬性設(shè)置為僅用于服務(wù)器身份驗(yàn)證:
echo extendedKeyUsage = serverAuth >> extfile.cnf
#8.生成簽名證書,執(zhí)行完后需要輸入密碼,上面我們?cè)O(shè)置的密碼(wang123)
openssl x509 -req -days 365 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem \
  -CAcreateserial -out server-cert.pem -extfile extfile.cnf
#9. 生成客戶端的key.pem
openssl genrsa -out key.pem 4096
openssl req -subj '/CN=client' -new -key key.pem -out client.csr
#10.使秘鑰適合客戶端身份驗(yàn)證
echo extendedKeyUsage = clientAuth >> extfile.cnf
echo extendedKeyUsage = clientAuth > extfile-client.cnf
#11.生成簽名證書,執(zhí)行完后需要輸入密碼
openssl x509 -req -days 365 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem \
  -CAcreateserial -out cert.pem -extfile extfile-client.cnf
#12.刪除不需要的文件
rm -v client.csr server.csr extfile.cnf extfile-client.cnf
#13.設(shè)置權(quán)限
chmod -v 0400 ca-key.pem key.pem server-key.pem
chmod -v 0444 ca.pem server-cert.pem cert.pem
#14.歸集服務(wù)器證書
cp server-*.pem /etc/docker/
cp ca.pem /etc/docker/

創(chuàng)建完證書之后,我們需要修改Docker配置:

#使Docker守護(hù)程序僅接收來(lái)自提供CA信任的證書的客戶端的鏈接
vim /lib/systemd/system/docker.service

ExecStart 屬性值進(jìn)行替換:

ExecStart=/usr/bin/dockerd --tlsverify --tlscacert=/usr/local/ca/ca.pem --tlscert=/usr/local/ca/server-cert.pem --tlskey=/usr/local/ca/server-key.pem -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock復(fù)制代碼

重新加載daemon并重啟docker

systemctl daemon-reload
systemctl restart docker

注意,請(qǐng)檢查防火墻和安全組是否都開放了此端口:2375

然后將ca證書下載到本地:

image-20230328163253175

配置完就可以取IDEA的Docker中進(jìn)行配置:

image-20230328163212670

二、Maven插件與Dockerfile

docker-maven-plugin

我們IDEA已經(jīng)可以連接Docker,我們想在package的時(shí)候,把打包鏡像推送到Docker當(dāng)中,我們需要配置Maven插件:

<plugin><!--制作docker鏡像的maven插件-->
   <groupId>com.spotify</groupId>
   <artifactId>docker-maven-plugin</artifactId>
   <version>1.2.2</version>
   <executions>
      <execution>
         <id>build-image</id>
         <phase>package</phase>
         <goals>
            <goal>build</goal>
         </goals>
      </execution>
   </executions>
   <configuration>
      <imageName>${project.artifactId}</imageName><!--鏡像名-->
      <imageTags>
         <imageTag>latest</imageTag>
      </imageTags>
      <dockerCertPath>./ca</dockerCertPath><!--證書所在的目錄-->
      <dockerDirectory>${project.basedir}</dockerDirectory><!--Dockerfile所在的目錄-->
      <dockerHost>https://ip:2375</dockerHost><!--docker所在的宿主機(jī)地址-->
      <resources>
         <resource><!--這里配置的就是打包后jar所在的位置-->
            <targetPath>/</targetPath>
            <directory>${project.build.directory}</directory>
            <include>${project.build.finalName}.jar</include>
         </resource>
      </resources>
   </configuration>
</plugin>

Dockerfile

FROM java:8
#作者
MAINTAINER wangze
#掛在
VOLUME /tmp
#將jar包添加到容器中并更名
ADD project-manage-service-0.0.1-SNAPSHOT.jar pms.jar
#運(yùn)行jar
RUN bash -c 'touch /pms.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/pms.jar"]

三、項(xiàng)目打包上傳鏡像

當(dāng)我們執(zhí)行package操作后,會(huì)自動(dòng)將jar包作為image上傳到Docker中:

image-20230328163820463

可以在IDEA右下角的服務(wù)中,找到Docker連接,查看鏡像

image-20230328163958744

四、容器的創(chuàng)建與運(yùn)行

容器的創(chuàng)建

先找到剛才打包的鏡像:

image-20230328115451996

然后右鍵創(chuàng)建一個(gè)容器:

這里端口格式為:主機(jī)端口:容器端口

例如你的項(xiàng)目在容器中是8080端口,你主機(jī)的8080已經(jīng)被占用,你可以這樣寫:

#訪問(wèn)的時(shí)候 http://ip:8090/
8090:8080

image-20230328130613849

運(yùn)行容器,我們可以看到對(duì)應(yīng)的日志:

image-20230328130552226

環(huán)境的檢查

首先檢查服務(wù)器的防火墻:

firewall-cmd --list-ports

如果主機(jī)端口沒有開放,則開放防火墻:

firewall-cmd --zone=public --add-port=8090/tcp --permanent
#重啟防火墻
firewall-cmd --reload

PS: 如果是遠(yuǎn)程服務(wù)器,記得配置安全組

訪問(wèn)項(xiàng)目檢驗(yàn)

訪問(wèn)項(xiàng)目的地址,可以正常訪問(wèn),即為成功發(fā)布

參考文章:

Docker開啟遠(yuǎn)程安全訪問(wèn)

到此這篇關(guān)于IDEA快速部署Spring Boot 項(xiàng)目到Docker的實(shí)現(xiàn)方法的文章就介紹到這了,更多相關(guān)IDEA部署Spring Boot到Docker內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java+io+swing實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)

    java+io+swing實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了java+io+swing實(shí)現(xiàn)學(xué)生信息管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • springboot集成mqtt的實(shí)踐開發(fā)

    springboot集成mqtt的實(shí)踐開發(fā)

    本篇文章主要介紹了springboot集成mqtt的實(shí)踐開發(fā),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • Java中文件操作和IO的實(shí)例練習(xí)

    Java中文件操作和IO的實(shí)例練習(xí)

    Java IO流和文件操作實(shí)現(xiàn)過(guò)程解析是Java語(yǔ)言中的一種基本操作,IO流是Java中處理輸入輸出的基礎(chǔ),這篇文章主要介紹了Java中文件操作和IO實(shí)例練習(xí)的相關(guān)資料,文中通過(guò)代碼及圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2025-11-11
  • java Hibernate 一對(duì)多自身關(guān)聯(lián)問(wèn)題

    java Hibernate 一對(duì)多自身關(guān)聯(lián)問(wèn)題

    formBean在提交表單的時(shí)候,域中數(shù)據(jù)庫(kù)在下一次中仍然保留引起的,struts formBean 默認(rèn)的scope為session,手動(dòng)設(shè)置為request,就好了
    2008-07-07
  • Spring結(jié)合WebSocket實(shí)現(xiàn)實(shí)時(shí)通信的教程詳解

    Spring結(jié)合WebSocket實(shí)現(xiàn)實(shí)時(shí)通信的教程詳解

    WebSocket?是基于TCP/IP協(xié)議,獨(dú)立于HTTP協(xié)議的通信協(xié)議,本文將使用Spring結(jié)合WebSocket實(shí)現(xiàn)實(shí)時(shí)通信功能,有需要的小伙伴可以參考一下
    2024-01-01
  • springboot實(shí)現(xiàn)對(duì)接poi 導(dǎo)出excel折線圖

    springboot實(shí)現(xiàn)對(duì)接poi 導(dǎo)出excel折線圖

    在Spring Boot項(xiàng)目中使用Apache POI庫(kù)可以實(shí)現(xiàn)將數(shù)據(jù)導(dǎo)出為Excel并嵌入動(dòng)態(tài)生成的折線圖,具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-10-10
  • Java實(shí)現(xiàn)String轉(zhuǎn)Integer的四種方案對(duì)比

    Java實(shí)現(xiàn)String轉(zhuǎn)Integer的四種方案對(duì)比

    在Java項(xiàng)目開發(fā)中,經(jīng)常會(huì)有類型轉(zhuǎn)換處理,這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)String轉(zhuǎn)Integer的四種方案對(duì)比,感興趣的小伙伴可以了解下
    2026-03-03
  • java對(duì)同一個(gè)文件進(jìn)行讀寫操作方法

    java對(duì)同一個(gè)文件進(jìn)行讀寫操作方法

    在本篇文章里我們給大家詳細(xì)講述了java對(duì)同一個(gè)文件進(jìn)行讀寫操作的方法和知識(shí)點(diǎn),需要的朋友們可以參考學(xué)習(xí)下。
    2018-10-10
  • Java中不用第三個(gè)變量來(lái)互換兩個(gè)變量的值

    Java中不用第三個(gè)變量來(lái)互換兩個(gè)變量的值

    在程序運(yùn)行期間,隨時(shí)可能產(chǎn)生一些臨時(shí)數(shù)據(jù),應(yīng)用程序會(huì)將這些數(shù)據(jù)保存在一些內(nèi)存單元中,每個(gè)內(nèi)存單元都用一個(gè)標(biāo)識(shí)符來(lái)標(biāo)識(shí)。這些內(nèi)存單元被稱為變量,定義的標(biāo)識(shí)符就是變量名,內(nèi)存單元中存儲(chǔ)的數(shù)據(jù)就是變量的值
    2021-10-10
  • mybatis3.4.6 批量更新 foreach 遍歷map 的正確姿勢(shì)詳解

    mybatis3.4.6 批量更新 foreach 遍歷map 的正確姿勢(shì)詳解

    這篇文章主要介紹了mybatis3.4.6 批量更新 foreach 遍歷map 的正確姿勢(shì)詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-11-11

最新評(píng)論

册亨县| 房山区| 四子王旗| 廊坊市| 西安市| 柘荣县| 青铜峡市| 绥芬河市| 乌兰浩特市| 阳东县| 武穴市| 丰顺县| 凤冈县| 武山县| 淳化县| 岱山县| 福清市| 江山市| 柏乡县| 阿勒泰市| 成都市| 双峰县| 岳西县| 鄂尔多斯市| 措美县| 新巴尔虎左旗| 甘洛县| 丰城市| 乌拉特前旗| 论坛| 稻城县| 包头市| 沧州市| 东城区| 全南县| 吕梁市| 怀来县| 博兴县| 霍林郭勒市| 山阳县| 丽水市|