溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

docker-maven-plugin怎么用

發布時間:2021-09-28 09:14:07 來源:億速云 閱讀:482 作者:小新 欄目:開發技術

小編給大家分享一下docker-maven-plugin怎么用,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

Docker-Maven-Plugin

微服務部署有兩種方法:

  • 手動部署:首先基于源碼打包生成jar包(或war包),寫個Dockerfile文件,基于基礎鏡像搞個新鏡像,將jar包(或war包)上傳至虛擬機并拷貝至JDK容器。(太麻煩了)

  • 通過Maven插件自動部署。 這也是企業實際開發中經常使用的方法。

Maven插件自動部署步驟

寫在最前面:該方法有漏洞,容易被黑客遠程放入挖礦機鏡像,開啟需做好防范,開放了2375,沒做ip限制,就被拉去挖礦了。。。推薦使用CA加密端口

1、修改宿主機的docker配置,開放2375端口,讓其可以遠程訪問

本地執行maven命令對于宿主機來說是遠程操作,docker的遠程操作是默認關閉的,先開啟2375端口

首先在宿主機上執行命令,修改配置文件(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,本地客戶端將通過這個來連接 Docker Daemon

tcp://0.0.0.0:2375:tcp socket,表示允許任何遠程客戶端通過 2375 端口連接 Docker Daemon。

原來

docker-maven-plugin怎么用

修改后

docker-maven-plugin怎么用

如果是centos7以下修改為

ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375

2、刷新配置,重啟服務

systemctl daemon-reload		//加載docker守護線程
systemctl restart docker 	//重啟docker

3、配置容器防火墻

即使開放了2375端口,外部也是不能訪問的,只能內部訪問,如果要讓外部可以訪問。得要配置下防火墻。如果阿里云不配置,當心被拉去挖礦-_-,我這是學校服務器,要vpn才能訪問,無所謂

這里就關了

使用命令
systemctl stop firewalld (關閉防火墻)
systemctl disable firewalld (禁用防火墻,開機不會啟動)

關閉 selinux

vi /etc/selinux/config,SELINUX=enforcing改為disabled

docker-maven-plugin怎么用

重啟完成后,檢查防火墻和selinux狀態

systemctl status firewalld(查看防火墻狀態)
secon(查看selinux狀態)

docker-maven-plugin怎么用

阿里云建議配置安全詛

此時我連一下 docker,成功

docker-maven-plugin怎么用

 4、在pom.xml 添加配置

用下面配置就會自動生成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節點的內容,改為私有倉庫地址和端口,再加上鏡像id和TAG,我們要直接傳到私服-->
                    <!--配置最后生成的鏡像名,docker images里的,我們這邊取項目名:版本-->
                    <imageName>172.19.240.208:5000/${project.artifactId}:${project.version}</imageName>
                    <!--基礎鏡像,相當于Dockerfile里的from-->
                    <baseImage>ascdc/jdk8</baseImage>
                    <!--入口點,project.build.finalName就是project標簽下的build標簽下的filename標簽內容,testDocker-->
                    <!--相當于啟動容器后,會自動執行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>
                            <!--把哪個文件上傳到docker,相當于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到私有倉庫有三點,并且前提是容器處于啟動狀態

<!-- 1、新增registryUrl節點,內容是私有倉庫地址和端口(我這邊設置了5000端口)-->
<registryUrl>你的ip:5000</registryUrl>

<!-- 2、新增pushImage節點 -->
<pushImage>true</pushImage>

<!-- 3、修改imageName節點的內容,改為私有倉庫地址和端口,再加上鏡像id和TAG,到倉庫里的名字就是你的項目名:版本 -->
<imageName>你的ip:5000/${project.artifactId}:${project.version}</imageName>

mvn clean,mvn install一下,先放到本地倉庫再說

docker-maven-plugin怎么用

然后執行mvn docker:build命令創建鏡像,如果還要上傳,加個-DpushImage參數

docker-maven-plugin怎么用

跑的時候有一個錯誤

[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]

百度查了一下,很多人說是要登錄,實際上不是要登錄,也不是倉庫不存在,實際上是我的docker上沒有jdk1.8的鏡像文件,需要自己下一個,可以docker search jdk8,pull一個,或者自己傳tar包上去然后Dockerfile搞一個。我直接pull了一個

docker-maven-plugin怎么用

docker images

docker-maven-plugin怎么用

在項目中改下基礎鏡像名

docker-maven-plugin怎么用

成功構建并push上去

docker-maven-plugin怎么用

docker-maven-plugin怎么用

docker-maven-plugin怎么用

查看鏡像

docker-maven-plugin怎么用

查看倉庫

docker-maven-plugin怎么用

看完了這篇文章,相信你對“docker-maven-plugin怎么用”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女