詳細(xì)docker-maven-plugin使用方法
Docker-Maven-Plugin
微服務(wù)部署有兩種方法:
- 手動(dòng)部署:首先基于源碼打包生成jar包(或war包),寫個(gè)Dockerfile文件,基于基礎(chǔ)鏡像搞個(gè)新鏡像,將jar包(或war包)上傳至虛擬機(jī)并拷貝至JDK容器。(太麻煩了)
- 通過Maven插件自動(dòng)部署。 這也是企業(yè)實(shí)際開發(fā)中經(jīng)常使用的方法。
Maven插件自動(dòng)部署步驟
寫在最前面:該方法有漏洞,容易被黑客遠(yuǎn)程放入挖礦機(jī)鏡像,開啟需做好防范,開放了2375,沒做ip限制,就被拉去挖礦了。。。推薦使用CA加密端口
1、修改宿主機(jī)的docker配置,開放2375端口,讓其可以遠(yuǎn)程訪問
本地執(zhí)行maven命令對(duì)于宿主機(jī)來說是遠(yuǎn)程操作,docker的遠(yuǎn)程操作是默認(rèn)關(guān)閉的,先開啟2375端口
首先在宿主機(jī)上執(zhí)行命令,修改配置文件(centos 7)
vi /lib/systemd/system/docker.service
在ExecStart=后添加配置 ‐H tcp://0.0.0.0:2375 ‐H unix:///var/run/docker.sock
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock \
unix://var/run/docker.sock:unix socket,本地客戶端將通過這個(gè)來連接 Docker Daemon
tcp://0.0.0.0:2375:tcp socket,表示允許任何遠(yuǎn)程客戶端通過 2375 端口連接 Docker Daemon。
原來

修改后

如果是centos7以下修改為
ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375
2、刷新配置,重啟服務(wù)
systemctl daemon-reload //加載docker守護(hù)線程 systemctl restart docker //重啟docker
3、配置容器防火墻
即使開放了2375端口,外部也是不能訪問的,只能內(nèi)部訪問,如果要讓外部可以訪問。得要配置下防火墻。如果阿里云不配置,當(dāng)心被拉去挖礦-_-,我這是學(xué)校服務(wù)器,要vpn才能訪問,無所謂
這里就關(guān)了
使用命令 systemctl stop firewalld (關(guān)閉防火墻) systemctl disable firewalld (禁用防火墻,開機(jī)不會(huì)啟動(dòng))
關(guān)閉 selinux
vi /etc/selinux/config,SELINUX=enforcing改為disabled

重啟完成后,檢查防火墻和selinux狀態(tài)
systemctl status firewalld(查看防火墻狀態(tài)) secon(查看selinux狀態(tài))

阿里云建議配置安全詛
此時(shí)我連一下 docker,成功

4、在pom.xml 添加配置
用下面配置就會(huì)自動(dòng)生成Dockerfile
<build>
<finalName>testDocker</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!--docker的maven插件-->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.1.0</version>
<!--配置部分-->
<configuration>
<!--修改imageName節(jié)點(diǎn)的內(nèi)容,改為私有倉庫地址和端口,再加上鏡像id和TAG,我們要直接傳到私服-->
<!--配置最后生成的鏡像名,docker images里的,我們這邊取項(xiàng)目名:版本-->
<imageName>172.19.240.208:5000/${project.artifactId}:${project.version}</imageName>
<!--基礎(chǔ)鏡像,相當(dāng)于Dockerfile里的from-->
<baseImage>ascdc/jdk8</baseImage>
<!--入口點(diǎn),project.build.finalName就是project標(biāo)簽下的build標(biāo)簽下的filename標(biāo)簽內(nèi)容,testDocker-->
<!--相當(dāng)于啟動(dòng)容器后,會(huì)自動(dòng)執(zhí)行java-jar/testDocker.jar-->
<entryPoint>["java", "‐jar", "/${project.build.finalName}.jar"]</entryPoint>
<!--是否推送到docker私有倉庫-->
<pushImage>true</pushImage>
<registryUrl>172.19.240.208:5000</registryUrl>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<!--把哪個(gè)文件上傳到docker,相當(dāng)于Dockerfile里的add testDocker.jar /-->
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
<dockerHost>http://172.19.240.208:2375</dockerHost>
</configuration>
</plugin>
</plugins>
</build>
注意,push到私有倉庫有三點(diǎn),并且前提是容器處于啟動(dòng)狀態(tài)
<!-- 1、新增registryUrl節(jié)點(diǎn),內(nèi)容是私有倉庫地址和端口(我這邊設(shè)置了5000端口)-->
<registryUrl>你的ip:5000</registryUrl>
<!-- 2、新增pushImage節(jié)點(diǎn) -->
<pushImage>true</pushImage>
<!-- 3、修改imageName節(jié)點(diǎn)的內(nèi)容,改為私有倉庫地址和端口,再加上鏡像id和TAG,到倉庫里的名字就是你的項(xiàng)目名:版本 -->
<imageName>你的ip:5000/${project.artifactId}:${project.version}</imageName>
mvn clean,mvn install一下,先放到本地倉庫再說
![[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-84l0HMwJ-1579593153706)(/Users/zhangye/Library/Application Support/typora-user-images/image-20200120214402887.jpg)]](http://img.jbzj.com/file_images/article/202109/2021092716222274.jpg)
然后執(zhí)行mvn docker:build命令創(chuàng)建鏡像,如果還要上傳,加個(gè)-DpushImage參數(shù)
![[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-wdYBT027-1579593153707)(/Users/zhangye/Library/Application Support/typora-user-images/image-20200120214544482.jpg)]](http://img.jbzj.com/file_images/article/202109/2021092716222375.jpg)
跑的時(shí)候有一個(gè)錯(cuò)誤
[ERROR] Failed to execute goal com.spotify:docker-maven-plugin:1.1.0:build (default-cli) on project demo:
Exception caught: pull access denied for jdk1.8, repository does not exist or may require 'docker login':
denied: requested access to the resource is denied -> [Help 1]
百度查了一下,很多人說是要登錄,實(shí)際上不是要登錄,也不是倉庫不存在,實(shí)際上是我的docker上沒有jdk1.8的鏡像文件,需要自己下一個(gè),可以docker search jdk8,pull一個(gè),或者自己傳tar包上去然后Dockerfile搞一個(gè)。我直接pull了一個(gè)

docker images

在項(xiàng)目中改下基礎(chǔ)鏡像名

成功構(gòu)建并push上去

![[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-SAUhrnA3-1579593153710)(/Users/zhangye/Library/Application Support/typora-user-images/image-20200121154702289.jpg)]](http://img.jbzj.com/file_images/article/202109/2021092716222580.jpg)

查看鏡像

查看倉庫

到此這篇關(guān)于詳細(xì)docker-maven-plugin使用方法的文章就介紹到這了,更多相關(guān)docker-maven-plugin使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
教你使用Docker搭建gitlab社區(qū)漢化版的詳細(xì)過程
很多朋友不太清楚使用Docker搭建gitlab社區(qū)漢化版的過程,總是容易出現(xiàn)錯(cuò)誤,今天小編抽空給大家分享使用Docker搭建gitlab社區(qū)漢化版的詳細(xì)過程,一起看看吧2021-09-09
Docker中啟動(dòng)Nacos的實(shí)現(xiàn)示例
本文主要介紹了Docker中啟動(dòng)Nacos的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-02-02
使用Docker方式啟動(dòng)tomcat,訪問首頁出現(xiàn)404的解決方案
這篇文章主要介紹了使用Docker方式啟動(dòng)tomcat,訪問首頁出現(xiàn)404的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-03-03
docker+gitlab+gitlab-runner部署詳解
這篇文章主要介紹了docker+gitlab+gitlab-runner部署詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10
安裝Docker Desktop報(bào)錯(cuò)WSL 2 installation is incomplete的問題(解決報(bào)錯(cuò))
這篇文章主要介紹了安裝Docker Desktop報(bào)錯(cuò)WSL 2 installation is incomplete的問題,解決方法很簡(jiǎn)單只需我們自己手動(dòng)更新一下,我們根據(jù)提示去微軟官網(wǎng)下載最新版的wsl2安裝后即可正常打開,需要的朋友可以參考下2021-06-06

