Idea和Docker如何集成
1、前言
上一節(jié)中,我們介紹了Dockerfile的方式構(gòu)建自己的鏡像。但是在實際開發(fā)過程中,一般都會和開發(fā)工具直接集成,如Idea。今天就介紹下idea和Docker如何集成。
2、開啟docker遠(yuǎn)程
要集成之前,需要我們本機能夠訪問docker服務(wù),也就是我們的docker服務(wù)需要開啟遠(yuǎn)程模式。
2.1、配置遠(yuǎn)程訪問模式
vi /usr/lib/systemd/system/docker.service
添加-H tcp://0.0.0.0:2375即可。
- -H:即添加host。
- tcp:表示tcp協(xié)議連接。
- 0.0.0.0: 表示不限制遠(yuǎn)程訪問ip。
- 2375:表示遠(yuǎn)程訪問端口。
添加后如下圖所示:
2.2、重啟docker服務(wù)
注意,如果防火墻有設(shè)置端口,這里需要開放2375端口。
systemctl daemon-reload systemctl restart docker
2.3、驗證
重啟服務(wù)后,可以直接瀏覽器訪問http://ip:2375/version。如果能夠成功訪問到信息,則說明遠(yuǎn)程配置成功。
3、Idea配置Docker
打開idea的設(shè)置,F(xiàn)ile -> Settings -> Build, Execution, Deployment -> Docker
在Connect to Docker daemon with:選擇TCP socket。并在Engine API URL輸入tcp://ip:2375,ip即我們虛擬機中ip。
輸入后,下方顯示Connection successful,即說明連接成功。
3.1、配置證書登錄
上面介紹的方式是直接開放tcp端口登錄,但是這樣回存在安全問題。實際項目中,我們一般還要加上證書的認(rèn)證。
1.先配置docker.service
vi /usr/lib/systemd/system/docker.service
ExecStart后面追加配置,/etc/docker/certs為生成證書的路徑,2375為docker開啟的遠(yuǎn)程端口:
--tlsverify --tlscacert=/etc/docker/certs/ca.pem --tlscert=/etc/docker/certs/server-cert.pem --tlskey=/etc/docker/certs/server-key.pem -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
2.接著生成認(rèn)證證書。
生成證書腳本create_cert.sh,全局替換下公網(wǎng)IP,證書密碼:
cker TLS 證書 #!/bin/bash #相關(guān)配置信息 SERVER="${公網(wǎng)IP}" PASSWORD="${證書密碼}" COUNTRY="CN" STATE="qqq" CITY="xxx" ORGANIZATION="sssss" ORGANIZATIONAL_UNIT="product" EMAIL="sasdasd" ###開始生成文件### echo "開始生成文件" mkdir -pv /etc/docker/certs #切換到生產(chǎn)密鑰的目錄 cd /etc/docker/certs #生成ca私鑰(使用aes256加密) openssl genrsa -aes256 -passout pass:$PASSWORD -out ca-key.pem 4096 #生成ca證書,填寫配置信息 openssl req -new -x509 -passin "pass:$PASSWORD" -days 3650 -key ca-key.pem -sha256 -out ca.pem -subj "/C=$COUNTRY/ST=$STATE/L=$CITY/O=$ORGANIZATION/OU=$ORGANIZATIONAL_UNIT/CN=$SERVER/emailAddress=$EMAIL" #生成server證書私鑰文件 openssl genrsa -out server-key.pem 4096 #生成server證書請求文件 openssl req -subj "/CN=$SERVER" -new -key server-key.pem -out server.csr sh -c 'echo subjectAltName = IP:0.0.0.0,IP:${公網(wǎng)IP},IP:127.0.0.1 >> extfile.cnf' sh -c 'echo extendedKeyUsage = serverAuth >> extfile.cnf' #使用CA證書及CA密鑰以及上面的server證書請求文件進行簽發(fā),生成server自簽證書 openssl x509 -req -days 3650 -in server.csr -CA ca.pem -CAkey ca-key.pem -passin "pass:$PASSWORD" -CAcreateserial -out server-cert.pem -extfile extfile.cnf #生成client證書RSA私鑰文件 openssl genrsa -out key.pem 4096 #生成client證書請求文件 openssl req -subj '/CN=${公網(wǎng)IP}' -new -key key.pem -out client.csr sh -c 'echo "extendedKeyUsage=clientAuth" > extfile-client.cnf' #生成client自簽證書(根據(jù)上面的client私鑰文件、client證書請求文件生成) openssl x509 -req -days 3650 -in client.csr -CA ca.pem -CAkey ca-key.pem -passin "pass:$PASSWORD" -CAcreateserial -out cert.pem -extfile extfile-client.cnf #更改密鑰權(quán)限 chmod 0400 ca-key.pem key.pem server-key.pem #更改密鑰權(quán)限 chmod 0444 ca.pem server-cert.pem cert.pem #刪除無用文件 rm client.csr server.csr echo "生成文件完成" ###生成結(jié)束###
直接執(zhí)行該腳本:
sh create_cert.sh
執(zhí)行成功后,在/etc/docker/certs可以看到我們生成的證書。
3.重啟docker。
systemctl daemon-reload systemctl restart docker
4.將certs整個復(fù)制到本地。打開Idea的Docker設(shè)置,Certificates folder選擇我們存放的cert目錄即可。
可以看到顯示Cnnection successful,表示連接成功。
4、創(chuàng)建Dockerfile
我們繼續(xù)使用上一篇的dockerfile-springboot工程,在該工程下添加Dockerfile文件。
我們需要使用Dockerfile構(gòu)建我們的鏡像到我們的Docker服務(wù)上,并運行該程序,最終訪問接口打印“success!”。
4.1、編寫Dockerfile
# 指定基礎(chǔ)鏡像作為該容器的基礎(chǔ)環(huán)境,如springboot應(yīng)用最起碼得有jdk環(huán)境 FROM openjdk:17 # 執(zhí)行維護者的信息 MAINTAINER xx # 設(shè)定時區(qū) ENV TZ=Asia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone # 創(chuàng)建一個存放該工程的目錄,將項目target目錄下的jar文件復(fù)制到容器中的目錄下 RUN mkdir -p /mydata/project COPY target/springboot_08_ssmp-0.0.1-SNAPSHOT.jar /mydata/project/springboot_08_ssmp.jar # 執(zhí)行啟動 ENTRYPOINT ["java", "-jar", "/mydata/project/springboot_08_ssmp.jar"]
4.2、配置啟動項
選擇Dockerfile的方式。
- 1:選擇我們的Dockerfile文件,
- 2:填寫我們的鏡像名稱,
- 3:我們?nèi)萜鞯拿Q,
- 4:填寫我們的端口映射,前面的是暴露宿主機端口,后面的是容器端口。
配置完后,直接運行,觀察控制臺輸出日志信息。
同時,控制臺的左側(cè)已經(jīng)有了我們剛構(gòu)建的鏡像和容器:
此時,容器已經(jīng)啟動!
4.3、訪問接口
由于我們映射出來的端口為8899,所以我們訪問http://ip:8899/books/test。
到此這篇關(guān)于Idea集成Docker的文章就介紹到這了,更多相關(guān)Idea集成Docker內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot下獲取resources目錄下文件的常用方法
本文詳細(xì)介紹了SpringBoot獲取resources目錄下文件的常用方法,包括使用this.getClass()方法、ClassPathResource獲取以及hutool工具類ResourceUtil獲取,感興趣的可以了解一下2024-10-10Java LocalCache 本地緩存的實現(xiàn)實例
本篇文章主要介紹了Java LocalCache 本地緩存的實現(xiàn)實例,具有一定的參考價值,感興趣的小伙伴們可以參考一下。2017-05-05SpringCloud @RefreshScope注解源碼層面深入分析
@RefreshScope注解能幫助我們做局部的參數(shù)刷新,但侵入性較強,需要開發(fā)階段提前預(yù)知可能的刷新點,并且該注解底層是依賴于cglib進行代理的,所以不要掉入cglib的坑,出現(xiàn)刷了也不更新情況2023-04-04Java數(shù)據(jù)結(jié)構(gòu)及算法實例:插入排序 Insertion Sort
這篇文章主要介紹了Java數(shù)據(jù)結(jié)構(gòu)及算法實例:插入排序 Insertion Sort,本文直接給出實例代碼,代碼中包含詳細(xì)注釋,需要的朋友可以參考下2015-06-06Springboot如何使用OSHI獲取和操作系統(tǒng)和硬件信息
這篇文章主要介紹了Springboot如何使用OSHI獲取和操作系統(tǒng)和硬件信息問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-10-10java并發(fā)編程專題(十一)----(JUC原子類)數(shù)組類型詳解
這篇文章主要介紹了JAVA JUC原子類 數(shù)組類型詳解的相關(guān)資料,文中示例代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下2020-07-07