使用IDEA构建SpringBoot程序的镜像

news2024/12/23 15:08:17

实战:使用IDEA构建SpringBoot程序的镜像

这里就以我之前写的WIT问卷管理系统为例子吧。

首先在之前写好的SpringBoot项目中新建一个DockerFile

在Dockerfile中写入我们的base镜像,之前我已经创建好了并且传到docker仓库了,这里就直接拉取

image-20240312095124511

接下来需要连接我们虚拟机/云服务器下的docker服务

这里我用的是阿里云

这里需要配置Docker的服务器,也就是我们在Ubuntu服务器安装的Docker,这里我们填写服务器相关信息,我们首选需要去修改一下Docker的一些配置,开启远程客户端访问:

sudo vim /etc/systemd/system/multi-user.target.wants/docker.service 

打开后,添加高亮部分:

image-20220701202846707

修改完成后,重启Docker服务

sudo systemctl daemon-reload
sudo systemctl restart docker.service 

由于我们用的是云服务器,需要在后台开放2375 TCP连接端口

image-20240312095308125

现在接着在IDEA中进行配置:

image-20240312095323016

先在edit中添加一个服务器链接

新增一个server,选择tcp链接,输入tcp://IP:2375即可

image-20240312095849222

添加好以后我们接着对Springboot包用maven打包

image-20240312100911598

打包完成后我们将构建好的jar包导入Dockerfile

COPY target/my-project-backend-0.0.1-SNAPSHOT.jar app.jar

这里是使用copy指令将文件拷贝到docker的默认路径中

然后设置在容器启动时开启我们的java程序,这里通过CMD完成

CMD java -jar app.jar

CMD命令可以设定容器启动后执行的命令,EXPOSE可以指定容器需要暴露的端口,但是现在我们还没有学习网络相关的知识,所以暂时不使用,这里指定为我们启动Java项目的命令。配置完成后在左侧点击运行,如果出现Failed to deploy XXX Dockerfile: Dockerfile': Not connected to docker错误,在排除服务器未开放的情况下,可能是idea权限不足导致的,退出idea再以管理员身份重新运行即可

image-20240312102248151

在构建成功后我们就可以在Docker 服务器中看到我们刚才传上来的新镜像了

image-20240312102622470

在镜像中可以看见我们刚才添加Springboot的操作

image-20240312102745769

接着在IDEA中启动镜像

image-20240312103111610

image-20240312103129637

点击启动即可,这里有点小翻车,因为我的项目用的是jdk17,而我们得镜像里只安装了jdk8

image-20240312103325574

只需要把之前添加jdk的操作版本换成17即可

image-20240312104128830

更换后再次启动,就发现成功运行在docker里了,不过我这个项目还用到了Redis,Mysql和RabbitMQ,那些还没有在base镜像里配置,所以功能还无法完全实现,但是总而言之确实在docker里跑起来了

image-20240312104330393

我们尝试访问一下8080端口,会发现无法访问,这是因为docker容器内部和外部的网络是隔离的,如果我们想要访问容器的服务器,就需要将对应端口绑定在宿主机上,同时让宿主机也开放这个端口,这样才能实现容器内的网络连接

docker run -p 8080:8080 -d wit-questionnaire:1.1

配置完成后,点击重新创建容器

image-20240312105540935

这下端口映射成功了,这里再次强调,如果是云服务器,需要去安全组中开启对应的端口

image-20240312105336101

为了方便以后使用,我们还是可以把它推送到DockerHub去

直接在IDEA上操作

image-20240312105631278

image-20240312105640965

填写之前Dockerhub仓库的对应信息,点击ok就可以push到远程仓库了


参考视频:Docker 容器技术 已完结(2022 最新版)4K蓝光画质+杜比音效 从内卷到开摆

视频教程文档:Docker容器技术

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1513178.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【教程】APP加固的那些小事情

摘要 APP加固是保护APP代码逻辑的重要手段,通过隐藏、混淆、加密等操作提高软件的逆向成本,降低被破解的几率,保障开发者和用户利益。本文将介绍APP加固常见失败原因及解决方法,以及处理安装出现问题的情况和资源文件加固策略选择…

yolo发展历史

yolo系列 一、任务描述二、设计思想三、发展历程1. YOLOv11.1问题背景1.2创新点1.3训练流程1.4检测流程1.4.1 优点1.4.2 缺点 2. YOLOv22.1问题背景2.2创新点2.3提升性能的方法2.4训练流程???? 3. YOLOv33.1问题背景3.2模型改进 4…

MySQL学习Day31-主从复制

一、主从复制概述: 主从复制作用1:读写分离,可以通过主从复制的方式来同步数据,然后通过读写分离提高数据库并发处理能力;其中一个是Master主库,负责写入数据;其它都是slave从库,负责读取数据。当主库进行更新的时候,…

相机安装位置固定后开始调试设备供电公司推荐使用方法

摄像头安装位置固定后开始调试 设备供电:无电源设备需要连接12V/2A电源并连接到摄像机的DC端口,而有电源的摄像机可以直接连接到220V电源。 连接设备:如果是有线连接,请使用网线将设备连接到电脑(建议直接连接&#…

Text-to-SQL 工具Vanna + MySQL本地部署 | 数据库对话机器人

今天我们来重点研究与实测一个开源的Text2SQL优化框架 – Vanna 1. Vanna 简介【Text-to-SQL 工具】 Vanna 是一个基于 MIT 许可的开源 Python RAG(检索增强生成)框架,用于 SQL 生成和相关功能。它允许用户在数据上训练一个 RAG “模型”&a…

PLC数采网关在实际应用中的效能-天拓四方

在工业自动化领域中,PLC扮演着至关重要的角色,它负责控制和监测生产线的各个环节。然而,随着工业4.0的推进和智能制造的快速发展,单纯依靠PLC进行现场控制已无法满足企业对数据集中管理、远程监控和智能分析的需求。因此&#xff…

立即注册 | 线上讲座:借助 NGINX Plus 优化物联网数据传输和应用安全

原文作者:NGINX 原文链接:立即注册 | 线上讲座:借助 NGINX Plus 优化物联网数据传输和应用安全 转载来源:NGINX 开源社区 NGINX 唯一中文官方社区 ,尽在 nginx.org.cn 基本信息 课程主题 借助 NGINX Plus 优化物联网…

地理数据 vs. 3D数据

在表示我们周围的物理世界时,地理空间数据和 3D 建筑数据是两个最常见的选择。 他们在各个行业和项目中发挥着至关重要的作用。 从构建数字孪生到可视化城市景观和创建沉浸式应用程序。 尽管地理空间和 3D 建筑数据有相似之处,但它们不可互换。 虽然地…

专升本 C语言笔记-05 常量定义 #define宏定义 const关键字 enum关键字

1.宏定义 #define的使用 1.1.宏定义的概念 宏定义就是用一个标识符来表示一个字符串,如果后面代码出现了该标识符,那么就全部替换成指定的字符串 1.2.宏定义实现案例 #include <stdio.h> #define N 123 int main() {printf("N %d\n",N);printf("N N…

Linux tcpdump抓包转Wireshark 分析

简介 tcpdump 是Linux系统下的一个强大的命令&#xff0c;可以将网络中传送的数据包完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤&#xff0c;本文将展示如何使用 tcpdump 抓包&#xff0c;以及如何用 tcpdump 和 wireshark 分析网络流量 tcpdump指…

一文带你详解天池医疗数据集

医疗作为和民生健康息息相关的产业&#xff0c;通过天池大赛开放出一批有临床科研价值的数据集&#xff0c;涵盖了预防、辅诊、医学科研等主题。 与此同时&#xff0c;阿里云天池平台也积极推动产学研的共同进步&#xff0c;开源了多个本地生活领域的数据集&#xff0c;如aBea…

(含代码)利用TensorRT的8位PTQ将Stable Diffusion速度提高 2 倍

利用TensorRT的8位PTQ将Stable Diffusion速度提高 2 倍 在生成人工智能的动态领域中&#xff0c;扩散模型脱颖而出&#xff0c;成为生成带有文本提示的高质量图像的最强大的架构。 像稳定扩散这样的模型已经彻底改变了创意应用。 然而&#xff0c;由于需要迭代去噪步骤&#x…

vulhub靶场-Jangow

下载&部署 下载 下载链接&#xff1a; https://download.vulnhub.com/jangow/jangow-01-1.0.1.ova 点击下载即可 部署 因为源虚拟机是从virtualbox导出的&#xff0c;为了避免繁琐的操作步骤&#xff0c;用virtualbox来导入 virtualbox下载地址&#xff1a; https:…

2021年1月1日起四川启动食品经营许可与备案电子证书办理

12月25日&#xff0c;四川省市场监督管理局、四川省大数据中心发布《关于启用食品经营许可登记电子证书的公告》&#xff08;以下简称《公告》&#xff09;。 《公告》显示&#xff0c;为贯彻落实《食品经营许可证管理办法》、《四川省小食品作坊、小经营店、商贩管理规定》和国…

常见面试题之计算机网络

1. OSI 五层模型&#xff08;或七层模型&#xff09;是什么&#xff0c;每一层的作用是什么 应用层&#xff1a;又可细分为应用层、表示层、会话层。其中应用层主要做的工作就是为应用程序提供服务&#xff0c;常见的协议为 HTTP、HTTPS、DNS等&#xff1b;表示层主要做的工作…

PXE自动化安装操作系统

一、PXE基本介绍 PXE&#xff0c;全名Pre-boot Execution Environment&#xff0c;预启动执行环境&#xff1b; 通过网络接口启动计算机&#xff0c;不依赖本地存储设备&#xff08;如硬盘&#xff09;或本地已安装的操作系统&#xff1b; 由Intel和Systemsoft公司于1999年9月…

通过一篇文章让你了解什么是函数栈帧

函数栈帧的创建和销毁 前言一、什么是函数栈帧二、 理解函数栈帧能解决什么问题三、 函数栈帧的创建和销毁解析3.1 什么是栈3.2 认识相关寄存器和汇编指令相关寄存器eaxebxebpespeip 相关汇编命令 3.3 解析函数栈帧的创建和销毁3.3.1 预备知识3.3.2 函数的调用堆栈3.3.4 准备环…

*Javaweb -- MyBatis*

一:介绍: 1.MyBatis是一个优秀的 ①持久层 ②框架,用于简化JDBC的开发! ①:JAVAEE有三层的结构:表现层, 业务层, 持久层. 表现层代表的是页面的展示,业务层则指的是对于相关逻辑的处理, 而持久层, 指的则是对于数据进行持久化,保存在数据库当中. 持久层具体的来说就是负责…

宏碁又遭网络袭击,菲律宾分公司大量数据被盗

近日&#xff0c;宏碁&#xff08;Acer&#xff09;菲律宾公司方面证实&#xff0c;管理该公司员工考勤数据的第三方供应商遭遇网络攻击&#xff0c;部分员工数据被盗。 宏碁&#xff0c;中国台湾计算机硬件和电子产品制造商&#xff0c;以其电脑产品极具性价比而闻名。 据悉&a…

生成式AI来袭,FOSS全闪对象存储应时而生

AI大模型正飞速跃进&#xff0c;从引领文本生成革命的ChatGPT到开创文生视频新纪元的Sora&#xff0c;多模态交互技术连续迭代&#xff0c;促进了智算中心的快速落地。在这一过程中&#xff0c;算力的迅猛增长对存储系统提出了更高的要求和挑战。为满足这些日益增长的需求&…