详细docker-maven-plugin使用方法

目录
  • Docker-Maven-Plugin
  • Maven插件自动部署步骤
    • 1、修改宿主机的docker配置,开放2375端口,让其可以远程访问
    • 2、刷新配置,重启服务
    • 3、配置容器防火墙
    • 4、在pom.xml 添加配置

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。

原来

修改后

如果是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

重启完成后,检查防火墙和selinux状态

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

阿里云建议配置安全诅

此时我连一下 docker,成功

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一下,先放到本地仓库再说

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

跑的时候有一个错误

[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使用方法的文章就介绍到这了,更多相关docker-maven-plugin使用内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Maven插件docker-maven-plugin的使用

    目录 1.docker-maven-plugin 介绍 2.环境.软件准备 3.Demo 示例 3.1 配置 DOCKER_HOST 3.2 示例构建镜像 3.3 执行命令 3.4 绑定Docker 命令到 Maven 各个阶段 3.5 使用私有 Docker 仓库地址 3.6 安全认证配置 3.7 其他参数 4.FAQ 参考资料 1.docker-maven-plugin 介绍 在我们持续集成过程中,项目工程一般使用 Maven 编译打包,然后生成镜像,通过镜像上线,能够大大提供上线效率,同时

  • docker maven plugin快速部署微服务的详细流程

    目录 一.前置条件 二.部署方法 1.开放远程部署端口 3.修改application文件 4.打包上传并创建镜像 5.启动容器 三.总结 一.前置条件 linux下装好docker并启动 1.使用国内 daocloud 一键安装命令 curl -sSL https://get.daocloud.io/docker | sh 2.启动docker systemctl start docker.service 二.部署方法 1.开放远程部署端口 <1>修改 docker 的配置文件 /lib/s

  • Spring Boot Maven Plugin打包异常解决方案

    [背景]spring-boot项目,打包成可执行jar,项目内有两个带有main方法的类并且都使用了@SpringBootApplication注解(或者另一种情形:你有两个main方法并且所在类都没有使用@SpringBootApplication注解),pom.xml如下 <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin<

  • Java数据开发辅助工具Docker与普通程序使用方法

    目录 介绍 需求背景: 程序的使用方法 Docker 方式: 普通方式 配置文件说明 最后的话 介绍 需求背景: 有很多业务系统,他们的数据库是相互独立的,俗称数据孤岛,为了做数据统计分析,就需要把这些数据归集在一个数据库中,比如数据仓库,然后多表关联查询,方便开发数据应用.希望能有这样的工具,指定两个数据库和表名,就可以将表从源数据库拷贝到目标数据库中.具体需求如下: 能自动同步表结构,如:源表加字段,目标表自动加字段. 支持增量或全量复制数据,比如按日期进行复制数据. 支持指定字段同步,只同

  • maven下载jar包改用阿里云maven库的方法

    本文介绍了maven下载jar包改用阿里云maven库的方法,分享给大家,具体如下: 修改maven安装路径中conf文件夹下的setting.xml文件 <mirrors> <mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> &l

  • 从零开始构建docker基础镜像的方法

    段子 今年基本已经结束了,我问了很多朋友今年挣钱了没?大多朋友都有挣,而且挣得五花八门:有挣个屁的,有挣个锤子的,有挣个毛的,更有甚者挣个妹的,奢侈之极!最恐怖的是挣个鬼的!有的还可以,挣个球,下午我碰见一朋友,问今年挣了吗?他望着天空喃喃自语:挣个鸟!看吧,只要肯努力,什么都能挣到. 年末将至,忽然发现,从创建开始到现在,整整一年时间,没有写过多少东西.为了留下一点痕迹,也是为了整理一下自己的收获,为17年画上一笔浓郁的色彩. 最近在看一本入门级机器学习的书,里面的案例基本上是python实现

  • 使用Nexus搭建Maven私服的方法步骤

    序言 maven私服类似.net中的nuget包服务器 官网/版本收费 首先要吐槽官网慢的一比,下载不下来. 地址:https://www.sonatype.com/ 下载地址:https://www.sonatype.com/download-nexus-repo-oss 版本/收费/免费:Nexus Repository Manager 仓库管理有2个版本,专业版和oss版,oss版是免费的,专业版是收费的,我们使用oss版. 简介 nexus是一个强大的maven仓库管理器,它极大的简化了

  • Maven deploy配置方法详解

    作用 在本地的pom文件配置好之后,执行deploy命令,可以将maven所打的jar包上传到远程的repository,便于其他开发者和工程共享. pom.xml配置 首选,在pom文件中project标签下添加如下代码: <distributionManagement> <repository> <id>releases</id> <name>Internal Releases</name> <url>http://l

  • 详解六种减小Docker镜像大小的方法

    我从2017年做Vulhub开始,一直在和一个麻烦的问题做斗争:在编写Dockerfile的时候, 如何减小 docker build 生成的镜像大小 ?这篇文章就给大家总结一下我自己使用过的六种减小镜像大小的方法. 1. 使用Alpine Linux Alpine Linux是一个基于BusyBox和Musl Libc的Linux发行版,其最大的优势就是小.一个纯的基础Alpine Docker镜像在压缩后仅有2.67MB. 不少Docker官方镜像都有Alpine版本,比如PHP: 比较之下

  • 搭建公司私有MAVEN仓库的方法

    使用工具及环境: cent os 7; jdk 1.8; nexus-3.9.0-01-unix.tar.gz 安装: 首先,下载安装包:https://sonatype-download.global.ssl.fastly.net/nexus/3/nexus-3.9.0-01-unix.tar.gz 然后设置: vim etc/profile  在该文件最下方 加入: export RUN_AS_USER=root 其次,上传至服务器:/root/nexus-3.9.0下,执行:tar -zx

  • 解决IDEA中下载free maven plugin插件无效的问题

    在IDEA中导入插件时成功 但是在实体类的方法接口中没有绿色的箭头(我现在是有的) 解决方案一:鼠标右键,选择最后一个Configure Gutter Lcons 查看里面的东西是否已经勾选上,如果已经勾选上还是没有效果请看方案二 解决方案二:请不要心慈手软彻底的删除idea,在安装idea软件,在进行下载free MyBatis plugin插件,应该八九不离十应该有效果了 总结 到此这篇关于解决IDEA中下载free maven plugin插件无效的问题的文章就介绍到这了,更多相关IDEA

随机推荐