最新IDEA快速實現(xiàn)Docker鏡像部署運行的過程詳解
背景
使用idea配合docker,實現(xiàn)從javaweb開發(fā),部署,運行全過程。
環(huán)境:已經(jīng)配置好的docker、已經(jīng)安裝好的mysql8容器、一個springBoot 框架的web項目(內(nèi)含swagger,便于測時)
開啟Docker的遠程連接
網(wǎng)上的方法找不到對應(yīng)的docker.service文件,可能版本或者安裝方式不同。
通過 systemctl status docker 查找docker.service文件位置:
修改/etc/systemd/system/docker.service文件:
#ExecStart=/usr/bin/dockerd ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
重啟Docker服務(wù):
systemctl daemon-reload systemctl restart docker.service
2375端口開放:
firewall-cmd --zone=public --add-port=2375/tcp --permanent firewall-cmd --reload
重啟后,驗證下2375端口是否是通的:
http://192.168.137.188:2375/info
注:這個就表示成功了。
idea docker插件配置
idea 2019 3 版已經(jīng)集成docker,未集成的請自行安裝。
注:docker— 點擊“+”后,填入連接名稱和linux主機ip:docker對外端口
idea連接docker,熟悉相關(guān)界面可用操作:
注:集成了包括容器,鏡像基本的常用命令,具體使用可自己研究,沒啥難度。
springboot應(yīng)用中加入dockerfile
注:與pom文件同級目錄,文件內(nèi)容如下:
FROM openjdk:8u212-jre MAINTAINER aliyu<2557170552@qq.com> COPY target/myframe-0.0.1-SNAPSHOT.jar /myframe-0.0.1-SNAPSHOT.jar ENTRYPOINT ["java", "-jar", "/myframe-0.0.1-SNAPSHOT.jar"]
添加docker 運行配置
注:1、右鍵“edit configuration”
2、點擊“+”,選擇docker
3、選擇前面定義的docker連接
4、dockerfile的名稱
5、dockerfile的目錄位置
6、項目鏡像及版本定義
7、run build image 打勾,并命名容器名稱,這樣可以在創(chuàng)建鏡像的后創(chuàng)建容器并運行。
8、配置宿主機與容器的端口映射
9、配置容器固定ip,以避免隨機ip導(dǎo)致的類似項目運行找不到服務(wù)的問題。固定ip配置請參考:http://blog.java1234.com/blog/articles/628.html
ps:mysql8容器已經(jīng)配置好默認(rèn)ip會和這里的ip為同一網(wǎng)段。
10、此處可以預(yù)覽命令,方便檢查錯誤。
11、配置運行docker run 之前需要重新編譯打包項目:
clean package -U -DskipTest -P test
注:因為開發(fā)時是主機訪問linux內(nèi)的mysql容器,而應(yīng)用生成為容器運行時時應(yīng)用容器訪問mysql容器。yml中mysql配置不一致,所以為docker 部署專門使用test yml配置文件。ps:容器間互相訪問,請查看“其他-容器間通信”標(biāo)題
創(chuàng)建好后,可以看到:
注:多了一個dockerFile 啟動
運行docker 啟動配置
點擊:
注:可以完整的看到maven clean 打包的過程,以及docker 構(gòu)建鏡像,創(chuàng)建并啟動容器的過程。甚至可以看到容器啟動項目的日志
測試訪問swagger主頁:
其他
容器之間通信
背景:因為不明白容器之間如何通信,導(dǎo)致配置mysql連接時,url一直不對,一直報數(shù)據(jù)庫連接問題。
宿主機ip加映射端口可以訪問mysql8容器:
url: jdbc:mysql://192.168.137.188:3307/db_myframe?serverTimezone=GMT
但是myframe 容器內(nèi) 通過 宿主機ip加映射端口 訪問失敗
因為容器和容器之間的通信不一樣
不能通過localhost:3306 訪問,docker容器中的localhost并不是指宿主機的localhost。
docker在運行時建立了虛擬網(wǎng)卡,并命名為docker0
通過 docker inspect mysql8 找到ip地址 172.17.0.2 ,但是注意容器訪問容器,端口需要用容器內(nèi)的端口,而不是映射到宿主機的3307。
到此這篇關(guān)于最新IDEA快速實現(xiàn)Docker鏡像部署運行的文章就介紹到這了,更多相關(guān)IDEA Docker鏡像部署運行內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
云原生自動化應(yīng)用于docker倉庫私有憑據(jù)secret創(chuàng)建
這篇文章主要為大家介紹了云原生自動化應(yīng)用于docker倉庫私有憑據(jù)secret創(chuàng)建,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-03-03Docker容器的網(wǎng)絡(luò)管理和網(wǎng)絡(luò)隔離的實現(xiàn)
這篇文章主要介紹了Docker容器的網(wǎng)絡(luò)管理和網(wǎng)絡(luò)隔離的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05通過Docker創(chuàng)建CentOS容器的實現(xiàn)步驟
本文主要介紹了Docker創(chuàng)建CentOS容器,使用文內(nèi)的腳本可以快速創(chuàng)建CentOS 7.8虛擬系統(tǒng)集群,并通過SSH(Secure Shell)遠程工具連接,感興趣的可以了解一下2021-11-11Docker buildx構(gòu)建多平臺鏡像并推送到私有倉庫的方法
這篇文章主要介紹了Docker buildx構(gòu)建多平臺鏡像并推送到私有倉庫,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01docker-compose部署nacos 2.2.3的詳細過程
這篇文章主要介紹了docker-compose部署nacos 2.2.3的詳細過程,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-11-11