IDEA直連服務(wù)器,進(jìn)行項(xiàng)目Docker部署,實(shí)現(xiàn)一鍵部署、啟動(dòng)
作者:xcbeyond
瘋狂源自夢想,技術(shù)成就輝煌!微信公眾號(hào):《程序猿技術(shù)大咖》號(hào)主,專注后端開發(fā)多年,擁有豐富的研發(fā)經(jīng)驗(yàn),樂于技術(shù)輸出、分享,現(xiàn)階段從事微服務(wù)架構(gòu)項(xiàng)目的研發(fā)工作,涉及架構(gòu)設(shè)計(jì)、技術(shù)選型、業(yè)務(wù)研發(fā)等工作。對于Java、微服務(wù)、數(shù)據(jù)庫、Docker有深入了解,并有大量的調(diào)優(yōu)經(jīng)驗(yàn)。
1、前言
在項(xiàng)目中使用docker后,通過docker的方式來啟動(dòng)系統(tǒng),需要經(jīng)過編譯、打jar包、打鏡像、啟動(dòng)等階段。在各種自動(dòng)化工具的出現(xiàn),對打包、部署等工作帶來了便利,一般都會(huì)選擇git+Jenkins方式進(jìn)行自動(dòng)化部署。在面對本地開發(fā)調(diào)試階段,如果過分的依賴自動(dòng)化工具,會(huì)顯得并不是那么的方便,比如:頻繁的代碼調(diào)整修改,卻要進(jìn)行代碼的git提交、登錄Jenkins進(jìn)行部署,這樣的頻繁操作,甚至?xí)屇惆l(fā)瘋的。
在開發(fā)階段,對應(yīng)開發(fā)人員接觸最多的就是開發(fā)工具IDE,如:IDEA中就提供了好多不錯(cuò)的插件供開發(fā)人員使用。針對上述問題,IDEA也提供的一些插件來解決這類問題。
本文主要來講述,如何在IDEA中通過插件來部署docker項(xiàng)目,方便開發(fā)階段的調(diào)試部署工作。
2、準(zhǔn)備工作
Centos7 docker環(huán)境
IDEA開發(fā)環(huán)境
SpringBoot項(xiàng)目(其他類型的項(xiàng)目均可)
(如果你還不對安裝docker環(huán)境,或有疑問,可參考之前的一篇文件《CentOS7 下Docker安裝、啟動(dòng)》)
3、IDEA直連docker服務(wù)器
3.1 開啟docker遠(yuǎn)程訪問
為了確保本地IDEA能夠訪問服務(wù)器上的docker環(huán)境,則需要開發(fā)對docker的2375端口的訪問權(quán)限。
(1) 打開docker服務(wù)啟動(dòng)配置文件/usr/lib/systemd/system/docker.service,在ExecStart=中追加-H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock,如下:
(2) 重啟docker環(huán)境
systemctl daemon-reload
systemctl start docker
(3) 關(guān)閉防火墻
關(guān)閉防火墻:
systemctl stop firewalld.service
禁止firewall開機(jī)啟動(dòng):
systemctl disable firewalld.service
(4) 本地telnet驗(yàn)證2375端口
在本地(即:IDEA開發(fā)環(huán)境機(jī)器)cmd中,通過telnet命令連接docker環(huán)境的2375端口,如下:
顯示如下,則表明可以遠(yuǎn)程訪問。
3.2 IDEA上安裝docker插件
安裝Docker integration插件,如果已安裝,請忽略本步驟。
打開File->Settings->Plugins,搜索Docker,可以看見Docker integration插件,安裝提示進(jìn)行一步步安裝,安裝完畢重啟IEDA。
重啟IDEA后,打開File->Settings->Build,Execution,Deployment,如果有Docker列表,則說明插件安裝成功。
3.3 連接配置docker服務(wù)器
打開File->Settings->Build,Execution,Deployment->Docker,按照下圖進(jìn)行配置即可。
說明:步驟③ 自定義命名即可
步驟④ 填寫docker環(huán)境地址,格式為:tcp://ip:2375 URL填寫完后,進(jìn)行自動(dòng)驗(yàn)證,并顯示步驟⑤成功提示。
3.4 直連docker服務(wù)器使用
在IDEA中,如下圖操作,即可直連docker服務(wù)器,可查看docker環(huán)境上所有鏡像、容器,并支持重啟、刪除等一系列操作,更多功能使用時(shí)再細(xì)細(xì)挖掘吧。
4、IDEA中項(xiàng)目Docker部署
4.1 使用docker-maven-plugin插件
在項(xiàng)目pom.xml中使用docker-maven-plugin插件,便可完成從編譯、打包、打鏡像、部署等流程。在pom.xml <build><plugins>...</plugins></build>中添加docker-maven-plugin插件配置,如下:
<!--使用docker-maven-plugin插件-->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<!--將插件綁定在某個(gè)phase執(zhí)行-->
<executions>
<execution>
<id>build-image</id>
<!--將插件綁定在package這個(gè)phase上。也就是說,用戶只需執(zhí)行mvn package ,就會(huì)自動(dòng)執(zhí)行mvn docker:build-->
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
<configuration>
<!--指定生成的鏡像名-->
<imageName>${project.artifactId}</imageName>
<!--指定標(biāo)簽-->
<imageTags>
<imageTag>latest</imageTag>
</imageTags>
<!-- 指定 Dockerfile 路徑-->
<dockerDirectory>${project.basedir}</dockerDirectory>
<!--指定遠(yuǎn)程docker環(huán)境地址-->
<dockerHost>http://192.168.1.1:2375</dockerHost>
<!-- 復(fù)制jar包到docker容器指定目錄配置 -->
<resources>
<resource>
<targetPath>/</targetPath>
<!--jar包所在的路徑,此處配置的 即對應(yīng)target 目錄-->
<directory>${project.build.directory}</directory>
<!-- 需要包含的jar包,這里對應(yīng)的是 Dockerfile中添加的文件名 -->
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
4.2 創(chuàng)建Dockerfile文件
在工程根目錄下新建Dockerfile文件,如下:
FROM openjdk:8-alpine
#擁有者
LABEL maintainer "xcbeyond"
VOLUME [ "/tmp" ]
# app.jar是你項(xiàng)目的jar包
COPY app.jar /app.jar
#對外暴露的端口
EXPOSE 1000
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
4.3 Build
在IDEA的右邊找到Maven Projects,找到Lifecycle,雙擊package打包,第一次打包比較慢,需要耐心等等。
看到下面就說明成功了
4.4 部署、啟動(dòng)
如下操作創(chuàng)建docker容器,并啟動(dòng)。
Image ID: 是打包生成的鏡像名
Container name: 容器名字,自定義即可。
Bind ports: 是docker對外暴露的端口
在IDEA中部署、啟動(dòng)后,可登陸docker環(huán)境,通過docker ps命令可以發(fā)現(xiàn)容器已經(jīng)啟動(dòng)了。
是不是很帥、很方便,具體怎么使用,就根據(jù)實(shí)際需求進(jìn)行靈活使用了。