Docker部署SSM项目及避坑指南
#又踩坑了,这里记录一下,以免日后忘记
前言:本来以为用docker部署个项目很轻松,嗯结果,又踩坑了,这里记录一个完整版。话不多说,开整。
第一步:
用docker拉取MySQL和Tomcat,这一步没什么好说的,太基础了(注意版本号)。
第二部:运行两个容器,这里以tomcat为例:
docker run -itd --name tomcat_1 --privileged -p 8081:8080 tomcat:9.0.83
注:运行MySQL的话,如果用导航工具,需要在MySQL上授权,否则会报连接错误,可以参考我之前的文章。
第三部:将准备好的SSM项目打成war包,然后复制到docker中tomcat容器下的/usr/local/tomcat/webapps目录下,tomcat会自动解压缩包,出现文件夹,效果如下:
第四部:这里建议直接安装以下命令,我们后续可能都会用上(根据自己的实际情况去定)
安装vim命令
apt-get install vim
安装ifconfig命令
apt-get install net-tools
安装ping命令
apt-get install iputils-ping
这里解释一下,为什么要安装这些:安装vim是因为你可能随时要改配置文件,安装ifconfig和ping是为了测试容器的连通性。
第五部:
我们修改tomcat的server.xml文件,位于conf文件夹下:
修改完后按:wq保存退出。
第六步,注意避坑来了,一定要把本地项目的连接数据库的ip地址改成容器地址,否则的话即便是你在本地主机能够正常访问MySQL,项目也一样连不上。这个地方我忘了,调试了好久,最后终于想到了这个问题。原理嘛,我就不多说了,可以好好看看docker的内部结构。
这里最好一定去验证容器见是可以通信的,以免发生意外:
最后一步,可以访问tomcat地址了:
如果不改数据库docker的地址,否则永远都无法与数据建立连接,即便是你本地测试已经好使了。
记录到此为止。
相关文章:

Docker部署SSM项目及避坑指南
#又踩坑了,这里记录一下,以免日后忘记 前言:本来以为用docker部署个项目很轻松,嗯结果,又踩坑了,这里记录一个完整版。话不多说,开整。 第一步: 用docker拉取MySQL和Tomcat&#…...
多线程代码案例:单例模式/阻塞队列/线程池/定时器
案例一.单例模式 单例模式是一种设计模式;类似于棋谱,有固定套路,针对一些特定场景可以给出一些比较好的解决方案; 只要按照设计模式来写代码,就可以保证代码不会太差,保证了代码的下限; --------------------------------------------------------------------------------…...
Ruby CGI Cookie
Ruby CGI Cookie 在Web开发中,Cookie是一种常用的技术,用于在用户浏览器和服务器之间存储和传递信息。Ruby作为一种流行的编程语言,提供了CGI(Common Gateway Interface)库来处理Cookie。本文将详细介绍如何在Ruby中使用CGI库来创建、读取、修改和删除Cookie。 Cookie的…...

linux中取消anaconda默认使用base环境
在linux新安装anaconda之后,每次打开终端,总是显示正在使用默认anaconda中的base环境,如下如所示: 取消该默认设置,打开home目录下的.condarc文件,在末尾添加如下命令: auto_activate_base: fa…...

江门中微子到底是做什么的?
江门中微子实验是一项重要的大科学装置实验。以下是关于它的一些详细信息: 实验位置与建设深度:位于广东江门地下 700 米处。这样的深度可以有效屏蔽宇宙射线等外界干扰,为探测中微子提供较为纯净的实验环境。探测器特点: 拥有世界…...

React源码03 - React 中的更新
03 - React 中的更新 React 中创建更新的方式: 初次渲染:ReactDOM.render、ReactDOM.hydrate 后续更新:setState、forceUpdate 1. ReactDOM.render() 先创建 ReactRoot 顶点对象然后创建 FiberRoot 和 RootFiber创建更新,使应用进…...
【Hive实战】Hive MetaStore升级调研(Mysql)
Hive MetaStore升级调研(Mysql库) 文章目录 Hive MetaStore升级调研(Mysql库)升级步骤脚本说明原文 MetaStore升级的主要部分是对存储媒介mysql进行schema进行升级。 升级步骤 关闭MetaStore实例并限制对MetaStore MySQL数据库的访…...
优化漏洞扫描流程以保障企业数字化业务安全
漏洞扫描技术历经二十余年发展,已从人工搜索演进至开源及商业扫描平台,其应用紧随IT环境与数字业务变迁而不断革新。为有效提升漏洞检测效果,确保企业数字化业务安全运行,安全专家建议遵循以下关键步骤实施漏洞扫描: …...

【大数据算法】一文掌握大数据算法之:大数据算法分析技术。
大数据算法分析技术 1、引言2、 大数据分析技术2.1 时间/空间复杂度2.2 I/O 复杂度2.3 结果质量2.4 通信复杂度 3、总结 1、引言 小屌丝:鱼哥,最近更文有些不频繁了哈。 小鱼:这一个月不见,你这说话方式也变了。 小屌丝ÿ…...

使用AITemplate和AMD GPU的高效图像生成:结合Stable Diffusion模型
Efficient image generation with Stable Diffusion models and AITemplate using AMD GPUs 2024年1月24日,作者是[Douglas Jia] Stable Diffusion 已成为图像生成领域的突破性进展,帮助用户将文本描述转化为引人入胜的视觉输出。 Stable Diffusion 的…...

基于yolov10的驾驶员抽烟打电话安全带检测系统python源码+pytorch模型+评估指标曲线+精美GUI界面
【算法介绍】 基于YOLOv10的驾驶员抽烟、打电话、安全带检测系统是一种先进的驾驶行为监测系统。该系统利用YOLOv10算法的高效性和准确性,实现对驾驶员行为的实时检测与识别。 YOLOv10是一种最新的实时物体检测模型,其通过深度学习技术,如卷…...

虚拟机网络设置为桥接模式
1、打开VMware Workstation Pro,点击“虚拟机—设置”,进入虚拟机设置页面 2、点击“网络适配器”,网络连接选择桥接模式 3、点击“编辑—虚拟网络编辑器”,进入虚拟网络编辑器页面 4、选择桥接模式,并选择要桥接到的…...

Numpy基础02
目录 1.数组操作 1.1改变维度 1.2遍历数组 1.2.1nditer(array,order) 1.2.1.1flags 参数 1.2.1.2op_flags 参数 1.3平展数组 1.3.1flatten(orderC) 1.3.2ravel() 1.4数组转置 1.4.1transpose() 1.4.2T 1.5分割数组 1.5.1hsplit(arr,indices_or_section) 1.5.2vsp…...

Elasticsearch是做什么的?
初识elasticsearch 官方网站:Elasticsearch:官方分布式搜索和分析引擎 | Elastic Elasticsearch是做什么的? Elasticsearch 是一个分布式搜索和分析引擎,专门用于处理大规模数据的实时搜索、分析和存储。它基于 Apache Lucene …...
Java中消息队列
MQ是Message Queue的缩写,也就是消息队列的意思,它是一种应用程序对应用程序的通信方法,使得应用程序能够通过读写出入列队的消息来进行通信,而无需要使用专用的连接来链接它们。消息队列中间件是分布式系统中重要的组件ÿ…...

高频面试手撕
手撕高频结构 前言 以下内容,都是博主在秋招面试中,遇到的面试手撕代码题目,不同于算法题目,更多考察的是基础知识,包含常见的数据结构比如线性表、哈希表、优先级队列等,还有多线程以及数据库连接池等内…...

Spring Boot 3.3 【八】整合实现高可用 Redis 集群
一、引言 在当今快速发展的软件开发领域,系统的性能和可靠性至关重要。Springboot 3 整合 Redis 7 集群具有多方面的重大意义。 首先,随着业务的不断发展,数据量呈爆炸式增长,单个 Redis 服务器往往难以满足存储和处理需求。Red…...
循环控制结构穷举 同构数
说明 同构数是会出现在它的平方的右边的数。例如,5就是1个同构数。5的平方是25,25最右边的这个数是5自己。25也是一个同构数,比如25的平方是625,而625右边的数是25. 请编程输出1000以内正整数中所有的同构数。每行一个答案。 输…...
主机本地IP与公网IP以及虚拟机的适配器和WSL发行版的IP
在局域网内,如果你想要连接到同一网络中的另一台设备,建议使用 本地 IP 地址(也称为局域网 IP 地址)。这是因为本地 IP 地址是在局域网内分配给设备的,用于在同一网络中的设备之间进行通信。 使用本地 IP 地址的好处 …...
@MassageMapping和@SendTo注解详解
MessageMapping注解是Spring Framework中用于WebSocket消息处理的注解,它用于将特定的消息路径映射到处理器方法上。SendTo注解指定了相应消息应该被发送到的目的地路径。 一、WebSocket配置类: Configuration EnableWebSocketMessageBroker public cl…...

23-Oracle 23 ai 区块链表(Blockchain Table)
小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...

HTML 列表、表格、表单
1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...
JVM垃圾回收机制全解析
Java虚拟机(JVM)中的垃圾收集器(Garbage Collector,简称GC)是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象,从而释放内存空间,避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建
华为云FlexusDeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色,华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型,能助力我们轻松驾驭 DeepSeek-V3/R1,本文中将分享如何…...

Qt的学习(二)
1. 创建Hello Word 两种方式,实现helloworld: 1.通过图形化的方式,在界面上创建出一个控件,显示helloworld 2.通过纯代码的方式,通过编写代码,在界面上创建控件, 显示hello world; …...

【threejs】每天一个小案例讲解:创建基本的3D场景
代码仓 GitHub - TiffanyHoo/three_practices: Learning three.js together! 可自行clone,无需安装依赖,直接liver-server运行/直接打开chapter01中的html文件 运行效果图 知识要点 核心三要素 场景(Scene) 使用 THREE.Scene(…...
软件工程教学评价
王海林老师您好。 您的《软件工程》课程成功地将宏观的理论与具体的实践相结合。上半学期的理论教学中,您通过丰富的实例,将“高内聚低耦合”、SOLID原则等抽象概念解释得十分透彻,让这些理论不再是停留在纸面的名词,而是可以指导…...
组合模式:构建树形结构的艺术
引言:处理复杂对象结构的挑战 在软件开发中,我们常遇到需要处理部分-整体层次结构的场景: 文件系统中的文件与文件夹GUI中的容器与组件组织结构中的部门与员工菜单系统中的子菜单与菜单项组合模式正是为解决这类问题而生的设计模式。它允许我们将对象组合成树形结构来表示&…...

Java多线程从入门到精通
一、基础概念 1.1 进程与线程 进程是指运行中的程序。 比如我们使用浏览器,需要启动这个程序,操作系统会给这个程序分配一定的资源(占用内存资源)。 线程是CPU调度的基本单位,每个线程执行的都是某一个进程的代码的某…...
编程笔记---问题小计
编程笔记 qml ProgressBar 为什么valuemodel.progress / 100 在QML中,ProgressBar的value属性用于表示进度条的当前进度值,其范围通常为0到1(或0%到100%)。当使用model.progress / 100来设置value时,这样做的原因是为…...