IDEA2021.2配置docker如何將springboot項(xiàng)目打成鏡像一鍵發(fā)布部署
之前博客已經(jīng)談到配置docker遠(yuǎn)程鏈接服務(wù),這里再介紹如何在IDEA中配置docker,將項(xiàng)目部署到服務(wù)器上
前文
Docker之開啟遠(yuǎn)程訪問的實(shí)現(xiàn)
idea2021激活教程
https://www.yuque.com/docs/share/b996d27e-c888-45f2-bb1e-f6db5efe2485?#
http://www.dbjr.com.cn/article/178193.htm
去插件中心安裝Docker插件,安裝完重啟IDEA。這個(gè)簡單
配置連接遠(yuǎn)程docker,打開Docker插件,新建連接,在Engine API URL處輸入服務(wù)器IP地址:2375。出現(xiàn)Connection successful代表鏈接成功,否則需要看看ip端口是否是通的
新建一個(gè)springboot項(xiàng)目,在pom文件中docker-maven-plugin插件,直接復(fù)制
<plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>1.2.1</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>clover/${project.artifactId}</imageName> <!--指定標(biāo)簽--> <imageTags> <imageTag>latest</imageTag> </imageTags> <!--指定Dockerfile 的位置,${project.basedir}:項(xiàng)目的根路徑下--> <dockerDirectory>${project.basedir}/src/main/resources/docker</dockerDirectory> <!--指定遠(yuǎn)程docker api地址--> <dockerHost>http://192.168.6.215:2375</dockerHost> <resources> <resource> <!--容器中自定義jar包存放的位置,及對(duì)應(yīng)的target目錄--> <targetPath>/</targetPath> <!--本地jar包所在路徑--> <directory>${project.build.directory}</directory> <!--需要包含本地jar包名稱,對(duì)應(yīng)的是Dockerfile中添加的文件名--> <include>${project.build.finalName}.jar</include> </resource> </resources> <!--以下兩行是為了docker push到DockerHub使用的--> <!--<serverId>docker-hub</serverId> <registryUrl>https://index.docker.io/v1</registryUrl>--> </configuration> </plugin>
添加個(gè)url接口,方便訪問:
@SpringBootApplication(exclude={DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class}) @RestController public class DockerdemoApplication { public static void main(String[] args) { SpringApplication.run(DockerdemoApplication.class, args); } @RequestMapping("/test") public String test(){ return "1. Hello world ! " + new SimpleDateFormat(" [yyyy-mm-dd HH:mm:ss]").format(new Date()); } }
在項(xiàng)目根目錄新建Dockerfile文件
# Docker image for springboot application # VERSION 0.0.1 # Author: bolingcavalry ### 基礎(chǔ)鏡像,使用alpine操作系統(tǒng),openjkd使用8u201 FROM openjdk:8u201-jdk-alpine3.9 #作者 MAINTAINER BolingCavalry <zq2599@gmail.com> #系統(tǒng)編碼 ENV LANG=C.UTF-8 LC_ALL=C.UTF-8 #聲明一個(gè)掛載點(diǎn),容器內(nèi)此路徑會(huì)對(duì)應(yīng)宿主機(jī)的某個(gè)文件夾 VOLUME /tmp #應(yīng)用構(gòu)建成功后的jar文件被復(fù)制到鏡像內(nèi),名字也改成了app.jar ADD target/dockerplugindemo-0.0.1-SNAPSHOT.jar app.jar #啟動(dòng)容器時(shí)的進(jìn)程 ENTRYPOINT ["java","-jar","/app.jar"] #暴露8080端口 EXPOSE 8080
在IDEA新建dockerfile啟動(dòng)文件
Dockerfile配置詳情如下圖所示,請(qǐng)按照?qǐng)D中的說明進(jìn)行設(shè)置,確保每個(gè)紅框中都會(huì)執(zhí)行到:
上圖中最下面的那個(gè)"Run Maven Goal"點(diǎn)擊后,會(huì)彈出一個(gè)小窗口 ,用來輸入要執(zhí)行的maven命令,這里輸入clean package -U -DskipTests,表示每次在構(gòu)建鏡像之前,都會(huì)將當(dāng)前工程清理掉并且重新編譯構(gòu)建:
設(shè)置完成后,點(diǎn)擊下圖紅框中的綠色三角按鈕,執(zhí)行此配置:
發(fā)布不成功可能會(huì)因?yàn)閕dea不是管理員權(quán)限打開的
,筆者就遇到這種情況,發(fā)布失敗,連不上服務(wù)器docker?;蛘叻阑饓?,宿主機(jī)的端口沒寫對(duì)等等
在服務(wù)器上執(zhí)行docker image
可以查看鏡像情況
在瀏覽器上訪問地址:http://192.168.6.215:8080/test,得到響應(yīng)如下圖所示,可見應(yīng)用在容器中正常運(yùn)行:
如果修改了代碼,再次點(diǎn)擊上圖的三角形啟動(dòng),就再次發(fā)布部署了
到此這篇關(guān)于IDEA2021.2配置docker如何將springboot項(xiàng)目打成鏡像一鍵發(fā)布部署的文章就介紹到這了,更多相關(guān)idea docker鏡像部署內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot+ShardingSphereJDBC實(shí)現(xiàn)讀寫分離詳情
這篇文章主要介紹了SpringBoot+ShardingSphereJDBC實(shí)現(xiàn)讀寫分離詳情,通過用??MySQL??進(jìn)行一主一從的主從復(fù)制展開全文內(nèi)容,需要的朋友可以參考一下2022-08-08Java concurrency集合之ConcurrentSkipListSet_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要為大家詳細(xì)介紹了Java concurrency集合之ConcurrentSkipListSet的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06application作用域?qū)崿F(xiàn)用戶登錄擠掉之前登錄用戶代碼
這篇文章主要介紹了application作用域?qū)崿F(xiàn)用戶登錄擠掉之前登錄用戶代碼,具有一定參考價(jià)值,需要的朋友可以了解下。2017-11-11Java數(shù)據(jù)結(jié)構(gòu)之對(duì)象的比較
比較對(duì)象是面向?qū)ο缶幊陶Z言的一個(gè)基本特征,下面這篇文章主要給大家介紹了關(guān)于Java數(shù)據(jù)結(jié)構(gòu)之對(duì)象的比較,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-02-02