当前位置: 首页 > news >正文

Idea使用Docker插件实现maven打包自动构建镜像

Docker 开启TCP 服务
vi /lib/systemd/system/docker.service

改写以下内容

ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

在这里插入图片描述

  • 重启服务
#重新加载配置文件
systemctl daemon-reload
#重启服务
systemctl restart docker.service

此时docker已经开放了2375端口,使用外部主机访问

http://docker:2375/info

IDEA 集成Docker
  • 安装Docker 插件
    在这里插入图片描述

  • 配置docker服务地址

在这里插入图片描述

点击view->services,打开docker的操作面板

在这里插入图片描述
双击docker01可以看到此docker服务下镜像和容器

在这里插入图片描述

右击docker镜像,可以创建新的容器,并且可以监控容器日志输出,docker的日志收集是将容器内的标准输出以及错误输出重定向到了宿主机的某个文件中,这样就可以看到容器的运行信息了。

在这里插入图片描述

配置maven插件,实现打包后自动生成镜像并启动容器
  • 在maven中配置docker打包插件
            <plugin><groupId>com.spotify</groupId><artifactId>docker-maven-plugin</artifactId><version>1.0.0</version><configuration><!-- 镜像名称 guoweixin/exam--><imageName>${project.artifactId}</imageName><!--指定标签--><imageTags><imageTag>latest</imageTag></imageTags><!-- 基础镜像jdk 1.8--><baseImage>java</baseImage><!-- 制作者提供本人信息 --><maintainer>zdk=20477@sina.com</maintainer><runs><run>mkdir -p /opt/java/</run></runs><!--切换到/ROOT目录 --><workdir>/ROOT</workdir><cmd>["java", "-version"]</cmd><entryPoint>["java", "-jar", "${project.build.finalName}.jar"]</entryPoint><!-- 指定 Dockerfile 路径<dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>--><!--指定远程 docker api地址--><dockerHost>http://docker:2375</dockerHost><!-- 这里是复制 jar 包到 docker 容器指定目录配置 --><resources><resource><targetPath>/ROOT</targetPath><!--用于指定需要复制的根目录,${project.build.directory}表示target目录--><directory>${project.build.directory}</directory><!--用于指定需要复制的文件。${project.build.finalName}.jar指的是打包后的jar包文件。--><include>${project.build.finalName}.jar</include></resource></resources></configuration></plugin>

这个插件的作用就是模拟一个Dockerfile,然后告诉docker服务打包一个镜像。

在cmd终端运行 mvn clean package docker:build命令可以构建一个镜像,其中clean package这两个是常用的插件命令,maven内置好了,而docker:build 这个是作用于package后的生命周期的build的阶段,作用就是将打好的jar包构建成一个镜像。

在这里插入图片描述
在这里插入图片描述

配置package的docker-build插件

当执行package生命周期的时候,设置goal目标,进行docker镜像的构建

<!--当执行mvn package 时,执行: mvn clean package docker:build -->
<executions><execution><id>build-image</id><!--指定此插件在package阶段执行--><phase>package</phase><goals><!--指定此插件的build的目标--><goal>build</goal></goals></execution>
</executions>

配置上这个以后,只要每次进行package就可以自动生成新的镜像。

完整的pom.xml如下:

    <build><finalName>app</finalName><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><excludes><exclude><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></exclude></excludes></configuration></plugin><plugin><groupId>com.spotify</groupId><artifactId>docker-maven-plugin</artifactId><version>1.0.0</version><configuration><!-- 镜像名称 guoweixin/exam--><imageName>${project.artifactId}</imageName><!--指定标签--><imageTags><imageTag>latest</imageTag></imageTags><!-- 基础镜像jdk 1.8--><baseImage>java</baseImage><!-- 制作者提供本人信息 --><maintainer>zdk=20477@sina.com</maintainer><runs><run>mkdir -p /opt/java/</run></runs><!--切换到/ROOT目录 --><workdir>/ROOT</workdir><cmd>["java", "-version"]</cmd><entryPoint>["java", "-jar", "${project.build.finalName}.jar"]</entryPoint><!-- 指定 Dockerfile 路径<dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>--><!--指定远程 docker api地址--><dockerHost>http://docker:2375</dockerHost><!-- 这里是复制 jar 包到 docker 容器指定目录配置 --><resources><resource><targetPath>/ROOT</targetPath><!--用于指定需要复制的根目录,${project.build.directory}表示target目录--><directory>${project.build.directory}</directory><!--用于指定需要复制的文件。${project.build.finalName}.jar指的是打包后的jar包文件。--><include>${project.build.finalName}.jar</include></resource></resources></configuration><executions><execution><id>build-image</id><!--指定此插件在package阶段执行--><phase>package</phase><goals><!--指定此插件的build的目标--><goal>build</goal></goals></execution></executions></plugin></plugins></build>

添加上这个打包插件以后,每执行package操作,就会执行docker:build,从而根据配置信息再次根据最新打的jar包创建出一个镜像,然后可以在idea中运行了。

相关文章:

Idea使用Docker插件实现maven打包自动构建镜像

Docker 开启TCP 服务 vi /lib/systemd/system/docker.service改写以下内容 ExecStart/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock重启服务 #重新加载配置文件 systemctl daemon-reload #重启服务 systemctl restart docker.service此时docker已…...

Tailwind css优于Bootstrap 7个原因

在某些情况下&#xff0c;Tailwind css 比 Bootstrap 更好&#xff0c;因为它是一个低级 CSS 框架&#xff0c;可让您根据需要构建自己的自定义组件。如果使用得当&#xff0c;它非常注重性能&#xff0c;可以显着减少 CSS 负载并确保更快的渲染。如果 Web 性能和自定义是您的首…...

IDEA简单拷贝一份新项目记录

IDEA简单拷贝项目记录 拷贝后改项目名&#xff0c;然后iml 配置文件改项目名&#xff0c;然后 .idea 中的compiler.xml 里面的name标签改项目名。 就可以了...

华为OD真题--字符串加密

2023华为OD统一考试&#xff08;AB卷&#xff09;题库清单-带答案&#xff08;持续更新&#xff09;or2023年华为OD真题机考题库大全-带答案&#xff08;持续更新&#xff09; "给你一串未加密的字符串str&#xff0c;通过对字符串的每一个字母进行改变来实现加密&#xf…...

UML-状态图

目录 状态图 状态图的图符 状态机 状态 ​转换 电话机状态图 活动图和状态图区别&#xff1a; 状态图 状态图(Statechart Diagram)是描述一个实体基于事件反应的动态行为&#xff0c;显示了该实体如何根据当前所处的状态对不同的事件做出反应。通常我们创建一个UML状态…...

chrome插件开发实例07- Vue调试插件vue-devtools

目录 一、为什么使用vue-devtools插件 二、如何安装 三、使用源码方式,安装Vue-devtools插件...

HTML <span> 标签

定义和用法 <span> 标签被用来组合文档中的行内元素。 浏览器支持 元素ChromeIEFirefoxSafariOpera<span>YesYesYesYesYes所有浏览器都支持 <span> 标签。 HTML 与 XHTML 之间的差异 NONE 提示和注释: 提示:请使用 <span> 来组合行内元素,以便…...

【PythonGIS】Python处理矢量数据的基本操作(查询、修改、删除、新建)

ogr库是一个处理地理空间矢量数据的开源库。它可以读取多种数据格式&#xff0c;进行地理处理、属性表操作、数据分析等操作。目前ogr和osr库已集成到GDAL库中&#xff0c;可以对栅格数据、矢量数据进行处理分析&#xff0c;被3S的研究人员广泛应用。感兴趣的可以自己去了解一下…...

15.2 【Linux】仅执行一次的工作调度

15.2.1 atd 的启动与 at 运行的方式 要使用单一工作调度时&#xff0c;我们的 Linux 系统上面必须要有负责这个调度的服务&#xff0c;那就是 atd 。 不过并非所有的 Linux distributions 都默认会把他打开的&#xff0c;所以&#xff0c;某些时刻我们必须要手动将他启用才行。…...

时间复杂度与空间复杂度的详解

目录 1.时间复杂度 2.时间复杂度计算例题 3.空间复杂度 1.时间复杂度 算法中的基本操作的执行次数&#xff0c;为算法的时间复杂度。 如何表达 时间复杂度&#xff1f; 大O的渐进表示法 实际中我们计算时间复杂度时&#xff0c;我们其实并不一定要计算精确的执行次数&#xf…...

每日一学:什么是 Harbor ?

目录 什么是 Harbor &#xff1f; 一、Harbor 的优势 二、Harbor 架构构成 三、Core services 这是 Harbor 的核心功能 什么是 Harbor &#xff1f; Harbor 是 VMware 公司开源的企业级 Docker Registry 项目&#xff0c;其目标是帮助用户迅速搭建一个企业级的 Docker Reg…...

灰度均衡变换之c++实现(qt + 不调包)

1.基本原理 灰度均衡是以累计分布函数变换为基础的直方图修正法&#xff0c;它可以产生一副灰度级分布概率均匀的图像。也就是说&#xff0c;经过灰度均衡后的图像在没一级灰度上像素点的数量相差不大。公式见下图&#xff0c;为灰度值为x的像素点的个数&#xff0c;n为总像素点…...

flink1.17 自定义trigger ContinuousEventTimeTrigger

在 ContinuousEventTimeTrigger 的基础上新增了timeout,如果超时后窗口都没关闭,那么就硬输出一波,避免间断数据,留存窗口太久. ContinuousEventTimeTrigger ContinuousEventTimeTrigger连续事件时间触发器与ContinuousProcessingTimeTrigger连续处理时间触发器,指定一个固定…...

AIGC:【LLM(五)】——Faiss:高效的大规模相似度检索库

文章目录 一.简介1.1 什么是Faiss1.2 Faiss的安装 二.Faiss检索流程2.1 构建向量库2.2 构建索引2.3 top-k检索 三.Faiss构建索引的多种方式3.1 Flat &#xff1a;暴力检索3.2 IVFx Flat &#xff1a;倒排暴力检索3.3 IVFxPQy 倒排乘积量化3.4 LSH 局部敏感哈希3.5 HNSWx 一.简介…...

自然语言处理从入门到应用——LangChain:记忆(Memory)-[记忆的类型Ⅱ]

分类目录&#xff1a;《自然语言处理从入门到应用》总目录 对话知识图谱记忆&#xff08;Conversation Knowledge Graph Memory&#xff09; 这种类型的记忆使用知识图谱来重建记忆&#xff1a; from langchain.memory import ConversationKGMemory from langchain.llms impo…...

桥接模式-java实现

桥接模式 桥接模式的本质&#xff0c;是解决一个基类&#xff0c;存在多个扩展维度的的问题。 比如一个图形基类&#xff0c;从颜色方面扩展和从形状上扩展&#xff0c;我们都需要这两个维度进行扩展&#xff0c;这就意味着&#xff0c;我们需要创建一个图形子类的同时&#x…...

Linux systemd管理常用的几个小案例

systemd是目前Linux系统上主要的系统守护进程管理工具&#xff0c;配置文件要以.service结尾且放到 /usr/lib/systemd/system/目录下面 1、systemd管理ElasticSearch [Unit] DescriptionElasticsearch Service[Service] Typeforking Userelastic Groupelastic ExecStart/home…...

38、IPv6过渡技术

本节内容作为IPv6相关知识的最后一节内容&#xff0c;同时也作为我们本专栏网络层知识的最后一节内容&#xff0c;主要介绍从IPv4地址到IPv6地址过渡的相关技术。在这里我们只学习各类考试中常考的三种技术。 IPv4向IPv6的过渡 在前面的知识中&#xff0c;我们学习到了两种IP地…...

HMMER-序列分析软件介绍

HMMER是一个软件包&#xff0c;它提供了制作蛋白质和DNA序列域家族概率模型的工具&#xff0c;称为轮廓隐马尔可夫模型、轮廓HMM或仅轮廓&#xff0c;并使用这些轮廓来注释新序列、搜索序列数据库以寻找其他同源物&#xff0c;以及进行深度多重序列比对。HMMER是已知蛋白质和DN…...

【项目学习1】如何将java对象转化为XML字符串

如何将java对象转化为XML字符串 将java对象转化为XML字符串&#xff0c;可以使用Java的XML操作库JAXB&#xff0c;具体操作步骤如下&#xff1a; 主要分为以下几步&#xff1a; 1、创建JAXBContext对象&#xff0c;用于映射Java类和XML。 JAXBContext jaxbContext JAXBConte…...

InnoDB存储结构全解析:行页区段与单表W行的关系既

一、背景与问题缘起 MySQL 5.6.51 版本下 2000 万行核心业务表开展新增字段操作&#xff0c;需求为新增BIGINT(19) NOT NULL DEFAULT 0 COMMENT 注释&#xff08;因业务实际需要存储大数值关联字段&#xff09;。 表的核心特性为Java 多线程密集读写&#xff0c;业务请求持续高…...

TI IWR1843+DCA1000数据采集实战:手把手教你用Matlab调用LUA脚本配置mmWave Studio参数

TI IWR1843DCA1000数据采集实战&#xff1a;从零掌握Matlab与LUA协同配置技巧 毫米波雷达开发中&#xff0c;参数配置的精准度直接决定了数据采集的质量。传统手动配置不仅效率低下&#xff0c;还容易因操作失误导致实验失败。本文将带你用Matlab与LUA脚本的黄金组合&#xff0…...

【车载嵌入式】TBOX:智能汽车的“云端神经中枢”与数据引擎

1. TBOX&#xff1a;智能汽车的“云端神经中枢”是什么&#xff1f; 想象一下你的爱车突然有了“超能力”——能自动报告故障、远程启动空调、甚至预测保养时间。这些神奇功能的背后&#xff0c;都离不开一个藏在仪表盘下方的小盒子&#xff1a;TBOX&#xff08;Telematics BOX…...

从电子琴到智能家居:无源蜂鸣器如何玩出花样?附ESP32播放《超级玛丽》主题曲代码

无源蜂鸣器的创意交响曲&#xff1a;从电子琴到游戏音效的ESP32实战指南 在创客和物联网开发的世界里&#xff0c;声音交互常常是项目中最容易被忽视却又最能提升用户体验的环节。无源蜂鸣器这个看似简单的元件&#xff0c;实际上蕴藏着惊人的创意潜力——它不只是发出单调的&q…...

Claude Code安装和接入deepseek笔记

序言 Claude Code安装不需要注册Claude账号&#xff0c;因为https://claude.com/ 不对国内大陆地区提供服务&#xff0c;正常访问无法注册账号。不注册Claude账号只是无法使用 Claude Code提供的大模型&#xff0c;正好我也想接入deepseek来使用&#xff0c;因此在接入自己的大…...

2026奇点大会AI部署白皮书深度解密(Kubernetes+LLM Runtime双栈融合架构首次公开)

第一章&#xff1a;2026奇点智能技术大会&#xff1a;AI原生容器化部署 2026奇点智能技术大会(https://ml-summit.org) AI原生容器化部署已成为大模型服务落地的核心范式。与传统微服务容器化不同&#xff0c;AI原生部署需同时满足GPU资源弹性调度、模型权重分片加载、推理请求…...

【爬虫实战对比】Requests vs Scrapy 笔趣阁小说爬虫,从单线程到高效并发的全方位升级

【爬虫实战对比】Requests vs Scrapy 笔趣阁小说爬虫&#xff0c;从单线程到高效并发的全方位升级 近期完成了笔趣阁小说爬虫的重构&#xff0c;从最初的Requests单线程版本&#xff0c;升级为Scrapy框架版本&#xff0c;过程中深刻体会到两者在开发效率、运行性能、代码可维护…...

如何快速获取百度网盘提取码:开源工具的终极实战指南

如何快速获取百度网盘提取码&#xff1a;开源工具的终极实战指南 【免费下载链接】baidupankey 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 还在为百度网盘分享链接的提取码而烦恼吗&#xff1f;每次遇到需要密码的资源&#xff0c;你都要在多个网页间来…...

PDFtoPrinter深度解析:.NET平台下的PDF自动化打印最佳实践

PDFtoPrinter深度解析&#xff1a;.NET平台下的PDF自动化打印最佳实践 【免费下载链接】PDFtoPrinter .Net Wrapper over PDFtoPrinter util allows to print PDF files. 项目地址: https://gitcode.com/gh_mirrors/pd/PDFtoPrinter PDFtoPrinter是一个专为.NET开发者设…...

万象视界灵坛入门必看:CLIP多模态原理通俗解读+像素界面操作逻辑映射

万象视界灵坛入门必看&#xff1a;CLIP多模态原理通俗解读像素界面操作逻辑映射 1. 什么是万象视界灵坛 万象视界灵坛是一款基于OpenAI CLIP技术的高级多模态智能感知平台。它将复杂的视觉识别技术转化为直观有趣的像素风格界面&#xff0c;让用户能够轻松探索图像与文本之间…...