【Java】Vert.x使用Maven构建Docker镜像并上传私库
创始人
2025-05-31 16:37:47
0

当初为了学习Docker和自动化运维方面的知识,在家里的机器中也部署了一整套运维工具。不得不说这Docker镜像几乎就是磁盘杀手,就一个完整的openj9 jdk镜像就已经差不多500MB了。还好不搞Nightly Build,不然一下子空间就全没了。

随着后面做的尝试越来越多,整套环境运行起来越来越臃肿(加了Nexus、加了Gitlab、加了Jenkins、加了Portainer…),这时我不得不考虑更加轻量化的解决方案。直到我发现原来可以通过Maven的Pom配置打包成Docker镜像时,我决定大刀阔斧做了以下修改:

  1. 砍掉Gitlab,自己本机开发本机部署搞什么Gitlab,没多大意义磁盘一坏该没的还是没了;
  2. 砍掉Nexus,代码版本库都没有了还要代码包管理库干什么;
  3. 砍掉Jenkins,都可以用Maven直接命令打包完成,就不需要Jenkins做持续集成了;
  4. 砍掉Portainer,这个可砍可不砍,纯粹是因为资源不够了所以砍掉了而已;

一套操作下来发现,居然还能战几年。果然是“穷”则变变则通。

要实现Maven构建Docker镜像关键还在于Pom文件,我这边的Pom文件是这样写的:

...0.36.0vtx192.168.100.152:5000tcp://192.168.100.152:2375yzhPwd...

... ...  io.fabric8  docker-maven-plugin  ${docker-maven.version}     ${docker-host.name}      ${docker.username}  ${docker.password}        ${target-ip.repo}/${docker.image.registry}/${project.artifactId}:${project.version}       adoptopenjdk:11-openj9    yzh0623@outlook.com     8197      /tmp     /usr/local/share      java  -jar  ${project.artifactId}-${project.version}.jar  -XX:MaxGCPauseMillis=200  -Xloggc:/tmp/${project.artifactId}/gc.log  -XX:+PrintGCDetails  -XX:+PrintGCDateStamps  -XX:+UnlockExperimentalVMOptions  -XX:+UseG1GC  -Djava.security.egd=file:/dev/./urandom  -XX:+UseCGroupMemoryLimitForHeap  -XX:MaxRAMFraction=1  -XX:+HeapDumpOnOutOfMemoryError  -cluster         dir    /usr/local/share    artifact             push-image    package       build  push     ${target-ip.repo}/${docker.image.registry}/${project.artifactId}:${project.version}      

(这里我是针对Vert.x应用进行直接Docker构建,如果是Springboot项目还需要进行一些调整。)

在一开始的时候可能各位还会报出以下这个问题,如下图:

Failed to execute goal io.fabric8:docker-maven-plugin:0.33.0:build (build-image) on project phw2-bi-vtx: Cannot create docker access object: Connect to 127.0.0.1:2375 [/127.0.0.1] failed: Connection refused (Connection refused) -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal io.fabric8:docker-maven-plugin:0.33.0:build (build-image) on project phw2-bi-vtx: Cannot create docker access object

这个问题有可能是因为2375端口(Docker对外开发端口)没有开启导致的,通过一下语句查看一下2375端口是否有打开:

# 查看2375端口是否开启
nc -vz -w 2 localhost 2375nc: connectx to localhost port 2375 (tcp) failed: Connection refused
nc: connectx to localhost port 2375 (tcp) failed: Connection refused

这个时候需要通过启动特殊镜像进行端口开启,如下图:

docker run -it -d \
--name=socat \
-p 2375:2375 \
-v /var/run/docker.sock:/var/run/docker.sock \
--restart=always \
bobrik/socat:latest \
TCP4-LISTEN:2375,fork,reuseaddr \
UNIX-CONNECT:/var/run/docker.sock

接下来就能够正常使用Maven进行构建并上传私库了。

相关内容

热门资讯

李营营律师:接受媒体采访时发表... 最高法院:接受媒体采访时发表商业评论,是否构成商业诋毁? 单方立场的一般性商业判断,不足以贬低他人商...
WTT香港总决赛:王曼昱蒯曼上... 来源:滚动播报 (来源:上观新闻) 12月13日,2025年WTT香港总决赛上演多场激战。女单赛场...
1.57亿元!郑州官宣:这一补... 广大消费者、各有关汽车销售企业: 根据2025年郑州市消费品以旧换新工作安排,现统筹新增消费品以旧换...
马丁内利本场数据解析:错失良机... 在英超第16轮的较量中,阿森纳与狼队的对决以0-0平局收场,令人失望的结果让球迷们感到沮丧。尤其是阿...
力争2026年全国基本实现政策... 新华社北京12月13日电(记者彭韵佳)记者12月13日从全国医疗保障工作会议上获悉,为积极适应人口发...
江苏省人民代表大会常务委员会关... 江苏省人大常委会公告 第 47 号 《江苏省人民代表大会常务委员会关于修改〈江苏省学生体质健康促进条...
俄发动大规模空袭,摧毁多家乌军... 据新华社,根据俄罗斯国防部13日发布的战报,俄武装力量12日深夜至13日凌晨对乌克兰实施了密集火力打...
江苏省学生体质健康促进条例 目 录 第一章 总则 第二章 体育活动 第三章 卫生与营养 第四章 保障与监督 第五章 法律责任 第...
原创 越... 近年来,中美关系愈发紧张,尤其是在稀土资源的争夺上。越南作为东南亚的一颗新星,正试图借此机遇在全球稀...
关联公司混同用工的三个关键法律... 随着经济的发展,关联公司作为更具规模性和竞争性的现代企业组织型态在实践中广泛存在。关联公司是《公司法...