昨晚看springboot视频的时候,发现可以使用docker-maven-plugin这个插件直接build出 docker 镜像到远程服务器上,感觉很方便,于是自己也试了一下,但是碰到了几个问题,记录一下。

一、开启docker远程端口

视频中使用的是centos,然而我是Ubuntu。好吧,其实没啥区别,但是还是有一点小区别的,,比如文件位置不同。

Ubuntu下需要编辑的文件为

vim /etc/default/docker

在最后一行加上

DOCKER_OPTS="-H unix:///var/run/docker.sock -H tcp://0.0.0.0:6732"

好,我们把端口设置为了6732,视频中就讲了这个,可能是系统原因,此时我本地用 Telnet 访问这个端口是不通的。

我们还需要

 vim /lib/systemd/system/docker.service

增加一行

EnvironmentFile=-/etc/default/docker

指定使用我们刚才编辑的文件

然后修改

ExecStart=/usr/bin/dockerd -H fd://

ExecStart=/usr/bin/dockerd -H fd:// $DOCKER_OPTS

其实就是指定使用我们刚才编辑的参数

好了,此时Telnet 通了。

二、配置pom文件

按照视频中的写法

在properties中增加一行指定远程主机的位置,端口为我们刚才配置的6732

	<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<dockerHost>http://x.x.x.x:6732</dockerHost>
</properties>

然后增加一个plugin

<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<configuration>
<!-- imageName>mavenTest</imageName> -->
<imageName>java</imageName>
<baseImage>java</baseImage>
<entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>

然后我们执行 mvn -DskipTests clean package docker:build

好,build成功。

问题来了,按照这样写是没问题的。

但是我突然想到怎么指定我build出来的image名称呢。然后我就把imageName改为了mavenTest

然后就报错了。。。

[ERROR] Failed to execute goal com.spotify:docker-maven-plugin:0.4.3:build (default-cli) on project mavenTest: Exception caught: java.util.concurrent.ExecutionException: com.spotify.docker.client.shaded.javax.ws.rs.ProcessingException: org.apache.http.client.ClientProtocolException: Cannot retry request with a non-repeatable request entity: Connection reset by peer -> [Help 1]

看这个错一脸懵逼,链接出错???刚还不是好的吗。又把名字换成java,又可以了。。于是百度了一下,有的说升级版本成0.4.4就可以了,有的说升级成1.0.0可以,然而,并没有什么用。

百度提供的有效信息就这么多了,,

于是去 GitHub上看了下,终于在 issues 中发现这样一个问题,

User could be warned if an illegal image name is specified

I have struggled for some time now with a strange problem, where mvn docker:build failed; amongst the error output, "Connection Reset" was found. I finally figured out what caused the issue: My maven project's artifact ID had upper-case letters in it, and I am using ${myPrefix}/${project.artifactId} as the image name. However, docker seems to not allow upper-case letters for images names.

看起来是我一样的问题,他说他的项目名中有大写字母,,,,,看到这里,恍然大悟,把imageName 改成 ttt 试了下,果然可以。。

最后想说一下,,其实这个错误是不应该犯得,因为视频中讲了image的命名规范

only [a-z0-9-_.]

没仔细看,,浪费一个小时。。

maven docker 插件集成的几个小坑的更多相关文章

  1. new JSONObject 无异常卡顿【Maven+Idea 导包不更新的小坑】

    问题描述 今天在使用JSONObject过程中出现了一个非常不可思议的现象,我Junit测试没有问题,但是就是打开服务器运行的时候,结果就是出不来,经过多次测试发现代码竟然卡在了new JSONObj ...

  2. IDEA使用Docker插件构建镜像

    IDEA使用Docker插件构建镜像 记一次坑  第一次插件docker-maven-plugin的 配置文件中没写远程主机的地址 <dockerHost>http://192.168.1 ...

  3. jenkins+maven+docker集成java发布(一)自动发布

    JAVA项目持续集成发布 标签(空格分隔): java jenkins 微服务中持续集成自动发布是很重要的一个环节,将不同的模块应用自动部署到一台或者N台服务器中如果采用人工部署的方式不太现实 git ...

  4. IDEA 集成 Docker 插件实现一键远程部署 SpringBoot 应用,无需三方依赖,开源微服务全栈项目有来商城云环境的部署方式

    一. 前言 最近有些童鞋对开源微服务商城项目 youlai-mall 如何部署到线上环境以及项目中 的Dockerfile 文件有疑问,所以写了这篇文章做个答疑以及演示完整的微服务项目发布到线上的流程 ...

  5. jenkins+maven+docker集成java发布(二)#远程发布

    jenkins+maven+docker集成java发布(一)中写了在Jenkins服务器自动部署业务,那需要将java项目部署到其他服务器怎么操作 这里需要依赖插件Publish Over SSH ...

  6. IDEA集成有道翻译插件/maven帮助插件/mybatis插件

    (一)IDEA集成有道翻译插件:https://www.cnblogs.com/a8457013/p/7814335.html 插件下载地址:http://plugins.jetbrains.com/ ...

  7. maven添加docker插件无法引入,运行时报错 No plugin found for prefix 'docker'

    maven 安装不上docker插件,运行 提示:docker:bulid时No plugin found for prefix 'docker' 原因是maven不能识别 docker-maven- ...

  8. 小程序插件集成functional-page-navigator真机调试报错

    小程序集成插件 插件里面有functional-page-navigator标签 一."小程序开发版已过期,请重新扫码连接" 真机在调用插件的时候报错 "小程序开发版已过 ...

  9. IDEA集成Docker插件后出现日志乱码的解决办法

    修改IDEA的vmoptions文件 找到IDEA安装目录的bin目录,在idea.exe.vmoptions和idea64.exe.vmoptions文件中追加以下内容: -Dfile.encodi ...

随机推荐

  1. (后端)Java中关于金额大小写的工具类

    /** * 金额小数转换成中文大写金额 * * @author Neil Han * */ private static final String UNIT[] = { "万", ...

  2. recovery 升级界面顶部花屏问题分析

    说明: 实际解决问题的过程有点曲折,后面找到原因,分析清楚问题后,总结下正确的分析方法,大致分析流程如下. 问题描述: 在进入recovery的时候,第一次上电进入recovery时,顶部会有一长条花 ...

  3. [20180317]12c TABLE ACCESS BY INDEX ROWID BATCHED3.txt

    [20180317]12c TABLE ACCESS BY INDEX ROWID BATCHED3.txt --//简单探究12c TABLE ACCESS BY INDEX ROWID BATCH ...

  4. Unity 4.6 GUI

    一起来窥探Unity的下一代GUI 预览 UI组件 UI结构 Canvas Button Selection List(滑动列表)

  5. windows 实用技巧

    以下内容版权归原作者所有!!!如果侵权,立即删除. 1.系统激活:https://mp.weixin.qq.com/s/Kl_iEeSSxSprblfSRZ6yEQ 2.百度云下载:https://w ...

  6. 解决windows下git push卡住问题的方法

    问题描述: 在windows下向使用git协议传输的Git Repo进行push时会卡住. -- 这是windows上的msysgit的bug,在新版本上已经修复,但要在.gitconfig中做一项配 ...

  7. Can't debug c++ project because unable to static library start program *.lib

    Can't debug c++ project because unable to static library start program *.lib   I'm using a library ( ...

  8. 在pycharm中每次运行代码不使用console而使用run

    问题:在pycharm中点击run运行程序,发现没有打开run窗口,而是打开的Python console窗口. 解决方法:打开菜单栏run->edit configurations,把下图中的 ...

  9. Opencv——相机标定

    相机标定的目的:获取摄像机的内参和外参矩阵(同时也会得到每一幅标定图像的选择和平移矩阵),内参和外参系数可以对之后相机拍摄的图像就进行矫正,得到畸变相对很小的图像. 相机标定的输入:标定图像上所有内角 ...

  10. Python脱产8期 Day02

    一 语言分类 机器语言,汇编语言,高级语言(编译和解释) 二 环境变量 1.配置环境变量不是必须的2.配置环境变量的目的:为终端提供执行环境 三Python代码执行的方式 1交互式:.控制台直接编写运 ...