最近項(xiàng)目較多欣福,接口的修改與測(cè)試每次比較麻煩,基于jenkins還是麻煩了一些语泽,又要寫腳本還得點(diǎn)那么多按鈕贸典,所以考慮直接在idea里面進(jìn)行docker部署,這樣每次修改了代碼后踱卵,通過(guò)maven本地化構(gòu)建完就可以直接推送到docker里面去了(網(wǎng)速不好可能也是硬傷如果接口部署在外網(wǎng)的話廊驼。。惋砂。不過(guò)能跟我們寫字樓這個(gè)網(wǎng)速的情況還是不多的所以可以忽略這種情況)
一妒挎、Docker的幾個(gè)基本概念,
image:鏡像文件西饵,就像我們的CD碟片一樣酝掩,這些碟有很多標(biāo)準(zhǔn)的公用版本,這些版本就像maven倉(cāng)庫(kù)一樣存在共有的鏡像倉(cāng)庫(kù)中罗标,(這里面涉及到安裝時(shí)候的一點(diǎn)修改就是也要改成國(guó)內(nèi)的鏡像不然下載死啦死啦地)庸队。繼續(xù)剛才的例子,我們可以買一張光盤這個(gè)過(guò)程等于是從公用鏡像上面下載了一個(gè)帶有tomcat的docker文件闯割,但是我們通過(guò)電腦的CD驅(qū)動(dòng)又往光盤上刻制了一些內(nèi)容彻消,此時(shí)就生成了一個(gè)新的鏡像,我們可以將鏡像放到倉(cāng)庫(kù)里面這個(gè)倉(cāng)庫(kù)是我們自己部署在服務(wù)端的server里面保存的宙拉。
docker-server:docker的server端宾尚,他的主要職責(zé)是管理我們的鏡像文件,還有docker的另外一個(gè)概念container谢澈,也就是容器煌贴,容器是docker部署應(yīng)用的真正載體。
container:容器是docker真正跑代碼的載體锥忿,我們的應(yīng)用是執(zhí)行在容器里面的牛郑。
二、安裝docker服務(wù)端
此處引用其他人的內(nèi)容敬鬓,做個(gè)記錄
https://www.cnblogs.com/shihaibin821/p/12731194.html
著重強(qiáng)調(diào)一點(diǎn)一定要修改鏡像倉(cāng)庫(kù)地址為國(guó)內(nèi)鏡像淹朋。
為docker添加證書保障安全性
https://blog.csdn.net/oceanyang520/article/details/101563309
三笙各、idea里面如何將代碼部署到遠(yuǎn)程的docker
1、首先要在idea中安裝docker插件
file--》settings--》plugins--》搜索docker础芍,安裝即可
2杈抢、安裝好插件后為docker配置遠(yuǎn)程服務(wù)地址
file--》settings--》builds,excution仑性,deployment--》docker
點(diǎn)擊加號(hào)添加連接
下方出現(xiàn)connection successful即表示連接遠(yuǎn)程server端成功惶楼。
3、添加Dockerfile文件在項(xiàng)目中文件名Dockerfile诊杆,文件內(nèi)容如下
FROM java:8
VOLUME /tmp
ADD calculation.jar app.jar
EXPOSE 8999
ENTRYPOINT [ "java", "-jar", "/app.jar" ]
4歼捐、修改pom里面maven的build模塊,可以將之前的構(gòu)建方式先注釋添加內(nèi)容如下
<build>
<finalName>${project.artifactId}</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
</configuration>
</plugin>
<!-- 跳過(guò)單元測(cè)試 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skipTests>true</skipTests>
</configuration>
</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>
<!--用戶只需執(zhí)行mvn package 刽辙,就會(huì)自動(dòng)執(zhí)行mvn docker:build-->
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
<configuration>
<!--指定生成的鏡像名-->
<imageName>insurance/${project.artifactId}</imageName>
<!--指定標(biāo)簽-->
<imageTags>
<imageTag>latest</imageTag>
</imageTags>
<!-- 指定 Dockerfile 路徑-->
<dockerDirectory>${project.basedir}</dockerDirectory>
<!--指定遠(yuǎn)程 docker api地址-->
<dockerHost>http://docker地址:2375</dockerHost>
<!-- 這里是復(fù)制 jar 包到 docker 容器指定目錄配置 -->
<resources>
<resource>
<targetPath>/</targetPath>
<!--jar 包所在的路徑 此處配置的 即對(duì)應(yīng) target 目錄-->
<directory>${project.build.directory}</directory>
<!-- 需要包含的 jar包 窥岩,這里對(duì)應(yīng)的是 Dockerfile中添加的文件名 -->
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
</plugins>
</build>
5、配置好后點(diǎn)擊maven構(gòu)建
6宰缤、點(diǎn)擊idea底部的service打開docker面板
找到剛剛打包并push的image鏡像點(diǎn)擊右鍵選擇create container颂翼,完成配置,配置截圖如下
主要做好端口的映射慨灭,Binds ports 前面是宿主機(jī)對(duì)外暴露的端口號(hào)朦乏,后面是docker container的端口號(hào),這兩個(gè)端口是負(fù)責(zé)通信氧骤,將我們部署在docker container里面的應(yīng)用與外界能夠進(jìn)行通信呻疹。
7、 啟動(dòng)
8筹陵、日志查看
點(diǎn)擊控制臺(tái)的log查看應(yīng)用啟動(dòng)日志
9刽锤、最后打開瀏覽器我們?cè)囍L問(wèn)宿主機(jī)的8999端口進(jìn)行檢查
每次更新代碼構(gòu)建完成后,點(diǎn)擊鏡像文件選擇create container--》docker image 就可以將原來(lái)的container里面的應(yīng)用刷新朦佩,肥腸滴方便并思。
ok成功了,將此作為一個(gè)筆記语稠,后面計(jì)劃在團(tuán)隊(duì)中推廣宋彼,結(jié)合swagger進(jìn)行敏捷開發(fā),感覺(jué)美美噠仙畦。输涕。。