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