您好,登錄后才能下訂單哦!
小編給大家分享一下docker-maven-plugin怎么用,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
微服務(wù)部署有兩種方法:
手動(dòng)部署:首先基于源碼打包生成jar包(或war包),寫個(gè)Dockerfile文件,基于基礎(chǔ)鏡像搞個(gè)新鏡像,將jar包(或war包)上傳至虛擬機(jī)并拷貝至JDK容器。(太麻煩了)
通過(guò)Maven插件自動(dòng)部署。 這也是企業(yè)實(shí)際開發(fā)中經(jīng)常使用的方法。
寫在最前面:該方法有漏洞,容易被黑客遠(yuǎn)程放入挖礦機(jī)鏡像,開啟需做好防范,開放了2375,沒(méi)做ip限制,就被拉去挖礦了。。。推薦使用CA加密端口
本地執(zhí)行maven命令對(duì)于宿主機(jī)來(lái)說(shuō)是遠(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,本地客戶端將通過(guò)這個(gè)來(lái)連接 Docker Daemon
tcp://0.0.0.0:2375
:tcp socket,表示允許任何遠(yuǎn)程客戶端通過(guò) 2375 端口連接 Docker Daemon。
原來(lái)
修改后
如果是centos7以下修改為
ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375
systemctl daemon-reload //加載docker守護(hù)線程 systemctl restart docker //重啟docker
即使開放了2375端口,外部也是不能訪問(wèn)的,只能內(nèi)部訪問(wèn),如果要讓外部可以訪問(wèn)。得要配置下防火墻。如果阿里云不配置,當(dāng)心被拉去挖礦-_-,我這是學(xué)校服務(wù)器,要vpn才能訪問(wèn),無(wú)所謂
這里就關(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
,成功
用下面配置就會(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)容,改為私有倉(cāng)庫(kù)地址和端口,再加上鏡像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私有倉(cāng)庫(kù)--> <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到私有倉(cāng)庫(kù)有三點(diǎn),并且前提是容器處于啟動(dòng)狀態(tài)
<!-- 1、新增registryUrl節(jié)點(diǎn),內(nèi)容是私有倉(cāng)庫(kù)地址和端口(我這邊設(shè)置了5000端口)--> <registryUrl>你的ip:5000</registryUrl> <!-- 2、新增pushImage節(jié)點(diǎn) --> <pushImage>true</pushImage> <!-- 3、修改imageName節(jié)點(diǎn)的內(nèi)容,改為私有倉(cāng)庫(kù)地址和端口,再加上鏡像id和TAG,到倉(cāng)庫(kù)里的名字就是你的項(xiàng)目名:版本 --> <imageName>你的ip:5000/${project.artifactId}:${project.version}</imageName>
mvn clean,mvn install一下,先放到本地倉(cāng)庫(kù)再說(shuō)
然后執(zhí)行mvn docker:build
命令創(chuàng)建鏡像,如果還要上傳,加個(gè)-DpushImage
參數(shù)
跑的時(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]
百度查了一下,很多人說(shuō)是要登錄,實(shí)際上不是要登錄,也不是倉(cāng)庫(kù)不存在,實(shí)際上是我的docker上沒(méi)有jdk1.8的鏡像文件,需要自己下一個(gè),可以docker search jdk8,pull一個(gè),或者自己傳tar包上去然后Dockerfile搞一個(gè)。我直接pull了一個(gè)
docker images
在項(xiàng)目中改下基礎(chǔ)鏡像名
成功構(gòu)建并push上去
查看鏡像
查看倉(cāng)庫(kù)
看完了這篇文章,相信你對(duì)“docker-maven-plugin怎么用”有了一定的了解,如果想了解更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。