docker-maven-plugin详细使用方法

Docker-Maven-Plugin

微服务部署有两种方法:

  1. 手动部署:首先基于源码打包生成jar包(或war包),写个Dockerfile文件,基于基础镜像搞个新镜像,将jar包(或war包)上传至虚拟机并拷贝至JDK容器。(太麻烦了)
  2. 通过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。

原来

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FFI5ySA8-1579593153701)(/Users/zhangye/Library/Application Support/typora-user-images/image-20200120205158708.png)]

修改后
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qGTVmVDX-1579593153703)(/Users/zhangye/Library/Application Support/typora-user-images/image-20200120210625855.png)]

如果是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端口,外部也是不能访问的,只能内部访问,如果要让外部可以访问。得要配置下防火墙。如果阿里云不配置,当心被拉去挖矿-_-,我这是学校服务器,要才能访问,无所谓

这里就关了

使用命令
systemctl stop firewalld (关闭防火墙)
systemctl disable firewalld (禁用防火墙,开机不会启动)

关闭 selinux

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

docker-maven-plugin详细使用方法_第1张图片
重启完成后,检查防火墙和selinux状态

systemctl status firewalld(查看防火墙状态)
secon(查看selinux状态)

docker-maven-plugin详细使用方法_第2张图片

阿里云建议配置安全诅

此时我连一下 docker,成功

docker-maven-plugin详细使用方法_第3张图片

4、在pom.xml 添加配置

用下面配置就会自动生成Dockerfile

<build>
        <finalName>testDockerfinalName>
        <plugins>

            <plugin>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-maven-pluginartifactId>
            plugin>

            
            <plugin>
                <groupId>com.spotifygroupId>
                <artifactId>docker-maven-pluginartifactId>
                <version>1.1.0version>
                
                <configuration>
                    
                    
                    <imageName>172.19.240.208:5000/${project.artifactId}:${project.version}imageName>
                    
                    <baseImage>ascdc/jdk8baseImage>
                    
                    
                    <entryPoint>["java", "‐jar", "/${project.build.finalName}.jar"]entryPoint>
                    
                    <pushImage>truepushImage>
                    <registryUrl>172.19.240.208:5000registryUrl>

                    <resources>
                        <resource>
                            <targetPath>/targetPath>
                            <directory>${project.build.directory}directory>
                            
                            <include>${project.build.finalName}.jarinclude>
                        resource>
                    resources>
                    <dockerHost>http://172.19.240.208:2375dockerHost>
                configuration>
            plugin>
        plugins>
    build>

注意,push到私有仓库有三点,并且前提是容器处于启动状态


<registryUrl>你的ip:5000registryUrl>


<pushImage>truepushImage>


<imageName>你的ip:5000/${project.artifactId}:${project.version}imageName>

mvn clean,mvn install一下,先放到本地仓库再说

docker-maven-plugin详细使用方法_第4张图片

然后执行mvn docker:build命令创建镜像,如果还要上传,加个-DpushImage参数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wdYBT027-1579593153707)(/Users/zhangye/Library/Application Support/typora-user-images/image-20200120214544482.png)]
跑的时候有一个错误

[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 images
在这里插入图片描述
在项目中改下基础镜像名
在这里插入图片描述

成功构建并push上去
docker-maven-plugin详细使用方法_第5张图片
docker-maven-plugin详细使用方法_第6张图片
docker-maven-plugin详细使用方法_第7张图片
查看镜像
在这里插入图片描述

查看仓库
docker-maven-plugin详细使用方法_第8张图片

你可能感兴趣的:(Docker)