idea使用docker将Java项目生成镜像并使用
1:开启docker 远程访问
- 使用 vim 编辑docker服务配置文件
vim /lib/systemd/system/docker.service
[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutStartSec=0
RestartSec=2
Restart=always
修改 ExecStart 添加 -H tcp://0.0.0.0:2375
[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:2375
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutStartSec=0
RestartSec=2
Restart=always
重新加载docker配置并重启服务
systemctl daemon-reload && systemctl restart docker
然后直接在命令行客户端输入如下命令进行测试,IP地址改为自己的
curl http://192.168.56.20:2375/version
出现如下信息则代表修改Docker服务设置远程访问成功。
{"Platform": {"Name": "Docker Engine - Community"},"Components": [{"Name": "Engine","Version": "26.0.0","Details": {"ApiVersion": "1.45","Arch": "amd64","BuildTime": "2024-03-20T15:17:48.000000000+00:00","Experimental": "false","GitCommit": "8b79278","GoVersion": "go1.21.8","KernelVersion": "5.15.0-101-generic","MinAPIVersion": "1.24","Os": "linux"}},{"Name": "containerd","Version": "1.6.28","Details": {"GitCommit": "ae07eda36dd25f8a1b98dfbf587313b99c0190bb"}},{"Name": "runc","Version": "1.1.12","Details": {"GitCommit": "v1.1.12-0-g51d5e94"}},{"Name": "docker-init","Version": "0.19.0","Details": {"GitCommit": "de40ad0"}}],"Version": "26.0.0","ApiVersion": "1.45","MinAPIVersion": "1.24","GitCommit": "8b79278","GoVersion": "go1.21.8","Os": "linux","Arch": "amd64","KernelVersion": "5.15.0-101-generic","BuildTime": "2024-03-20T15:17:48.000000000+00:00"
}
特别注意的点: 完全开放Docker对外访问权限有可能会遭到别人攻击,这是很不安全的,只要别人知道你的服务器地址就能够随意连接你的Docker服务,而不需要任何认证,因此,完全开放只推荐自己在内网使用,不推荐在云服务器上直接完全开放。
在使用 docker info 命令时,会报警告
[DEPRECATION NOTICE]: API is accessible on http://0.0.0.0:2375 without encryption.Access to the remote API is equivalent to root access on the host. Referto the 'Docker daemon attack surface' section in the documentation formore information: https://docs.docker.com/go/attack-surface/
In future versions this will be a hard failure preventing the daemon from starting! Learn more at: https://docs.docker.com/go/api-security/
在未来的版本中,这将是一个阻止守护进程启动的硬故障,
那就暂时先不管。
2:在idea安装docker插件在idea安装docker插件
idea在2023.3.3版本已经内置了docker,其他版本自行下载即可

3:在项目下创建Dockerfile文件(与pom.xml同目录)
这里最好放在pom.xml同级目录下,指定文件方便,如果单独放一个文件夹,指定路径的jar会报找不到,需要将打包的jar手动丢进去。

Dockerfile文件内容
#设置引用的jdk环境容器
FROM jdk:17
#FROM centos7-java17:latest
LABEL version="1.0"
LABEL description=" hello world docker "
#目录是终端默认在此目录下
WORKDIR /app#如果是到文件夹后面必须加上“/”,不然会找不到文件,./代表当前目录即是/app
COPY target/helloTest-0.0.1-SNAPSHOT.jar helloTest.jar
#开机执行
ENTRYPOINT ["java", "-jar", "helloTest.jar"]
6:Dockerfile文件FROM位置的绿色双箭头,去配置链接docker服务


Dockerfile : 指定 Dockerfile文件地址
Image tag : 设置上传到docker的镜像名称
Container name: 设置容器名称
Bind ports: 配置的端口绑定。例如,如果您已经在Docker主机端口5432上运行PostgreSQL,则可以将主机上的端口5433映射到容器内的5432,如前面的屏幕截图所示。这将使PostgreSQL在容器内运行,通过主机上的端口5433可访问。

点击 + 号,创建一个新连接

选择 TCP socket 连接,
输入 服务器的IP地址 + 2375 端口号
tcp://192.168.204.143:2375
输入后,idea 会立即连接,如果成功,会显示
Connection successful

点击OK保存后,点击RUN 运行。

这里显示的 Step ,是在dockerfile中写的命令,命令有几个,Step 就有几个。
正常 Step 步骤执行完后,打包就OK 了。

随后会立即启动

显示 hello world 表示启动成功
从浏览器访问测试
http://192.168.204.143:8990/

再看控制台

执行controller 方法成功。
-----end-----
后记:
我在pom.xml上加了 docker的插件,但是并不好用,实际上还是要单独提交。
<!-- docker插件--><plugin><groupId>com.spotify</groupId><artifactId>docker-maven-plugin</artifactId><version>${docker.version}</version><configuration><!-- 远程Docker的地址 --><dockerHost>http://192.168.204.142:2375</dockerHost><!-- 镜像名称、前缀、项目名 --><imageName>${docker.image.prefix}</imageName><!-- Dockerfile的位置 --><dockerDirectory>${project.basedir}/build</dockerDirectory><resources><resource><targetPath>/</targetPath><!-- 表示的target文件夹 --><directory>${project.build.directory}</directory><!-- 表示打出来的JAR包--><include>${project.build.finalName}.jar</include></resource></resources></configuration></plugin>
只是打了jar,。
测试项目地址
https://github.com/yanzhao77/helloTest
参考资料:
1,win10 版本的docker
idea使用docker生成镜像(打包镜像,导入镜像,导出镜像)
2,
Docker安全开放远程访问连接权限
3,
Docker镜像和容器的基本命令操作
4,
IDEA 打包docker镜像(以打包Jdk8为例)
相关文章:
idea使用docker将Java项目生成镜像并使用
1:开启docker 远程访问 使用 vim 编辑docker服务配置文件 vim /lib/systemd/system/docker.service [Service] Typenotify # the default is not to use systemd for cgroups because the delegate issues still # exists and systemd currently does not suppor…...
clickhouse sql使用2
1、多条件选择 multiIf(cond_1, then_1, cond_2, then_2, …, else) select multiIf(true,0,1) 当第一条件不成立看第二条件判断 第一个参数条件参数,第二参数条件成立时走 2、clickhouse 在计算时候长出现NaN和Infinity异常处理 isNaN()和isInfinite()处理...
jrebel
JRebel最新版(2024.1.2)在线激活_jrebel 激活 2024-CSDN博客 JRebelXRebel热部署插件激活支持IDEA2023.1_jrebel and xrebel 激活-CSDN博客...
【单片机家电产品学习记录--红外线】
单片机家电产品学习记录–红外线 红外手势驱动电路,(手势控制的LED灯) 原理 通过红外线对管,IC搭建的电路,实现灯模式转换。 手势控制灯模式转换,详细说明 转载 1《三色调光LED台灯电路》,…...
Java入门教程||Java Applet基础
Java Applet基础 applet是一种Java程序。它一般运行在支持Java的Web浏览器内。因为它有完整的Java API支持,所以applet是一个全功能的Java应用程序。 如下所示是独立的Java应用程序和applet程序之间重要的不同: Java中applet类继承了 java.applet.Applet类Applet…...
Python可视化概率统计和聚类学习分析生物指纹
🎯要点 🎯使用Jupyter Notebook执行Dash 应用,确定Dash输入输出,设计回调函数,Dash应用中包含函数。🎯使用Plotly绘图工具:配置图对象选项,将图转换为HTML、图像。使用数据集绘图…...
yolo v8 教程(不出5行代码让你学会)
Solving environment: failedPackagesNotFoundError: The following packages are not available from current channels:- python3.8https://github.com/ultralytics 下滑来到 先来介绍为什么写这篇博客, 一. 是我之前的yolov5的博客挺多人访问的,但是…...
MongoDB集合结构分析工具Variety
工具下载地址:GitHub - variety/variety: Variety: a MongoDB Schema Analyzer 对于Mongo这种结构松散的数据库来说,如果想探查某个集合的结构,通过其本身提供的功能很不方便,通过调研发现一个很轻便的工具--variety,…...
详解Qt中访问数据库
在Qt中访问数据库涉及到几个关键步骤,主要包括加载数据库驱动、建立数据库连接、执行SQL语句、读取结果等。下面将详细介绍这些步骤,并给出一个简单的示例,这里假设使用的是SQLite数据库。 记得首先在pro文件中添加QT sql 1. 加载数据库驱动…...
《QT实用小工具·三》偏3D风格的异型窗体
1、概述 源码放在文章末尾 可以在窗体中点击鼠标左键进行图片切换,项目提供了一些图片素材,整体风格偏向于3D类型,也可以根据需求自己放置不同的图片。 下面是demo演示: 项目部分代码如下所示: 头文件部分ÿ…...
如何优化TCP?TCP的可靠传输机制是什么?
在网络世界中,传输层协议扮演着至关重要的角色,特别是TCP协议,以其可靠的数据传输特性而广受青睐。然而,随着网络的发展和数据量的激增,传统的TCP协议在效率方面遭遇了挑战。小编将深入分析TCP的可靠性传输机制&#x…...
DFS(基础,回溯,剪枝,记忆化)搜索
DFS基础 DFS(深度优先搜索) 基于递归求解问题,而针对搜索的过程 对于问题的介入状态叫初始状态,要求的状态叫目标状态 这里的搜索就是对实时产生的状态进行分析检测,直到得到一个目标状态或符合要求的最佳状态为止。对于实时产生新的状态…...
基于Scala开发Spark ML的ALS推荐模型实战
推荐系统,广泛应用到电商,营销行业。本文通过Scala,开发Spark ML的ALS算法训练推荐模型,用于电影评分预测推荐。 算法简介 ALS算法是Spark ML中实现协同过滤的矩阵分解方法。 ALS,即交替最小二乘法(Alte…...
Go语言和Java编程语言的主要区别
目录 1.设计理念: 2.语法: 3.性能: 4.并发性: 5.内存管理: 6.标准库: 7.社区和支持: 8.应用领域: Go(也称为Golang)和Java是两种不同的编程语言&…...
【TypeScript系列】与其它构建工具整合
与其它构建工具整合 构建工具 BabelBrowserifyDuoGruntGulpJspmWebpackMSBuildNuGet Babel 安装 npm install babel/cli babel/core babel/preset-typescript --save-dev.babelrc {"presets": ["babel/preset-typescript"] }使用命令行工具 ./node_…...
Java | Leetcode Java题解之第12题整数转罗马数字
题解: 题解: class Solution {String[] thousands {"", "M", "MM", "MMM"};String[] hundreds {"", "C", "CC", "CCC", "CD", "D", "DC…...
哈佛大学商业评论 --- 第五篇:智能眼镜之战
AR将全面融入公司发展战略! AR将成为人类和机器之间的新接口! AR将成为人类的关键技术之一! 请将此文转发给您的老板! --- 专题作者:Michael E.Porter和James E.Heppelmann 虽然物理世界是三维的,但大多…...
paddlepaddle模型转换onnx指导文档
一、检查本机cuda版本 1、右键找到invdia控制面板 2、找到系统信息 3、点开“组件”选项卡, 可以看到cuda版本,我们这里是cuda11.7 cuda驱动版本为516.94 二、安装paddlepaddle环境 1、获取pip安装命令 ,我们到paddlepaddle官网ÿ…...
图像处理与视觉感知---期末复习重点(6)
文章目录 一、图像分割二、间断检测2.1 概述2.2 点检测2.3 线检测2.4 边缘检测 三、边缘连接3.1 概述3.2 Hough变换3.3 例子3.4 Hough变换的具体步骤3.5 Hough变换的法线表示形式3.6 Hough变换的扩展 四、阈值处理4.1 概述4.2 计算基本全局阈值算法4.3 自适应阈值 五、基于区域…...
git 如何删除本地和远程分支
删除本地分支 确认当前分支:首先,确保你没有在要删除的分支上。你可以通过运行git branch命令来查看当前的分支。 切换分支:如果你在要删除的分支上,需要先切换到另一个分支。例如,切换到main分支,可以使用…...
LFM2.5-1.2B-Thinking-GGUF一文详解:Thinking模式与传统Decoder-only模型的本质差异
LFM2.5-1.2B-Thinking-GGUF一文详解:Thinking模式与传统Decoder-only模型的本质差异 1. 模型概述 LFM2.5-1.2B-Thinking-GGUF是Liquid AI推出的轻量级文本生成模型,专为低资源环境优化设计。该模型采用创新的Thinking模式架构,与传统Decode…...
s2-pro效果展示:高保真语音生成——呼吸感、重音、语速变化细节还原
s2-pro效果展示:高保真语音生成——呼吸感、重音、语速变化细节还原 1. 专业级语音合成新标杆 s2-pro作为Fish Audio开源的专业级语音合成模型镜像,正在重新定义文本转语音的技术标准。不同于市面上常见的机械式语音合成,这款工具能够精准还…...
SDMatte提示词(Prompt)高级使用技巧:引导模型优化抠图边缘
SDMatte提示词(Prompt)高级使用技巧:引导模型优化抠图边缘 1. 为什么提示词对抠图质量至关重要 你可能已经发现,同样的图片在不同提示词下,SDMatte生成的蒙版质量会有明显差异。这就像给修图师不同的工作指令——说&…...
SEO_网站排名不上去?试试这几个SEO解决办法
SEO:网站排名不上去?试试这几个SEO解决办法 如果你发现自己的网站在百度上的排名一直不上去,你可能正面临着一场SEO战争。SEO,全称搜索引擎优化,是提高网站在搜索引擎结果中排名的关键技术。本文将为你详细探讨一些常见…...
HunyuanVideo-Foley惊艳效果:AI生成的赛博朋克城市雨夜环境音效
HunyuanVideo-Foley惊艳效果:AI生成的赛博朋克城市雨夜环境音效 1. 效果展示:赛博朋克音效的沉浸式体验 HunyuanVideo-Foley 私有部署镜像带来的音效生成能力,让AI创作达到了专业音频工程师的水准。我们以"赛博朋克城市雨夜"为场…...
Pi0具身智能v1医疗应用:手术辅助机器人原型
Pi0具身智能v1医疗应用:手术辅助机器人原型 1. 引言 想象一下这样一个场景:外科医生正在进行一台精密的心脏手术,手术台旁的机械臂精准地递送器械,实时调整照明角度,还能在关键时刻提供力反馈提醒。这不是科幻电影&a…...
OpenClaw 配置目录
OpenClaw(也称 Clawdbot)的所有配置、状态数据、工作区和技能均集中在用户主目录下的 ~/.openclaw/(Linux/macOS)或 %USERPROFILE%\.openclaw\(Windows)这个核心目录中。 ~/.openclaw/ 是整个系统的根配置…...
Qwen2.5-72B-Instruct-GPTQ-Int4镜像定制:添加自定义工具函数与插件
Qwen2.5-72B-Instruct-GPTQ-Int4镜像定制:添加自定义工具函数与插件 1. 模型简介与部署验证 Qwen2.5-72B-Instruct-GPTQ-Int4是通义千问大模型系列的最新版本,在多个关键能力上实现了显著提升: 知识量与专业能力:特别强化了编程…...
OpenClaw多模型切换:nanobot镜像动态加载不同规格Qwen
OpenClaw多模型切换:nanobot镜像动态加载不同规格Qwen 1. 为什么需要动态切换模型 在本地部署AI助手时,我发现一个痛点:不同任务对模型能力的需求差异很大。简单任务如整理文件、生成周报草稿,用7B参数模型完全够用;…...
SDMatte Web化服务运维指南:supervisorctl管理与日志定位技巧
SDMatte Web化服务运维指南:supervisorctl管理与日志定位技巧 1. 服务概述与核心价值 SDMatte是一款专注于高质量图像抠图的AI模型,特别擅长处理复杂边缘和半透明物体的提取任务。该模型已经完成Web化封装,用户可以通过简单的网页操作完成专…...
