Docker方式启动Tomcat,从外部访问却出现404错误

一、情况

今天使用docker hub上拉下来的最新版tomcat运行,在外部访问却显示404错误。
在这里插入图片描述
我们可以看到tomcat镜像是正常运行的。
在这里插入图片描述
而我们又看到镜像打印出来的日志,并没有问题。虚拟机的防火墙和电脑的防火墙都关了。
在这里插入图片描述
在这里插入图片描述
结果还是不行。
但是我半年之前从docker hub拉下来的tomcat镜像运行之后,从外部是可以访问到的。

二、原因

随后,我分别进入了两个tomcat的目录(使用docker exec -it tomcat01(镜像名) /bin/bash即可进入)

新镜像的目录:
在这里插入图片描述
新镜像的webapps目录
在这里插入图片描述
新镜像的webapps.dist目录
在这里插入图片描述旧镜像的目录:
在这里插入图片描述
旧镜像的webapps目录
在这里插入图片描述

我们可以看到新镜像的目录中多出了一个webapps.dist目录,webapps目录下的项目都转移到了webapps.dis目录中。

三、解决办法

只需要把webapps目录删除在把webapps.dist目录重命名为webapps就行了。
在这里插入图片描述

### 解决 Tomcat 启动访问错误及端口冲突问题 当遇到 Tomcat 启动后无法正常访问或者因端口冲突导致的服务异常时,可以从以下几个方面入手解决问题。 #### 一、确认当前端口占用情况 在 Windows 系统下,可以通过命令行工具 `netstat` 查看指定端口的占用状态。具体操作如下: 1. 打开命令提示符(Win + R 输入 `cmd` 并回车)。 2. 使用以下命令查找特定端口是否被占用: ```bash netstat -ano | findstr 端口号 ``` 此处,“端口号”替换为你怀疑发生冲突的具体数值[^2]。 上述命令会返回一系列信息,其中最后一列表示占用该端口的进程 ID (PID)[^4]。 #### 二、定位并处理冲突进程 一旦找到占用目标端口的 PID,可通过任务管理器终止对应进程: 1. 按 Ctrl + Shift + Esc 或者右键单击任务栏选择“任务管理器”,进入详细视图模式。 2. 在进程中寻找对应的 PID,并尝试停止其运行。 3. 如果不确定某个进程的安全性,请勿随意关闭系统核心组件;必要情况下记录日志以便后续排查原因。 完成以上步骤之后重新启动 Tomcat 实例应该能够恢复正常工作流程。 #### 三、调整应用程序监听地址与端口设置 对于基于 Spring Boot 的项目来说,默认情况下内嵌版 Tomcat 会在本地主机上绑定至预设好的 HTTP(S) 接收接口位置(通常是8080卡位),但实际生产环境中往往需要自定义这些参数以满足不同场景需求: ##### 方法A: 修改 application.properties 文件中的 server.port 属性值为例: ```properties server.port=9090 ``` 这样做的好处是可以轻松避开常见的低范围保留区间的潜在竞争状况同时便于区分多个实例之间的差异之处[^1]。 另外还可以考虑采用随机分配机制(`server.port=0`)让框架自行决定可用资源从而进一步简化运维负担。 ##### 方法B: 利用外部环境变量覆盖内部设定 假如不想硬编码进配置文件里头的话,则可以在启动脚本里面追加 JVM 参数形式传递给程序执行期间生效,像下面这样写法也是可行的选择之一 : ```shell java -Dserver.port=7070 -jar your-application.jar ``` 这种方法特别适合于云原生架构下的动态伸缩场合因为每次创建新副本时候都可以单独给予独一无二的身份标识而无需担心互相干扰现象的发生概率增加太多. #### 四、优化长期策略防止再次出现类似事件 除了即时修复现有矛盾之外还需要着眼于长远发展制定更加完善的管理制度减少未来可能遭遇的风险因素: - **合理规划网络拓扑结构**: 明确划分各个子网区间用途避免不必要的交叉重叠. - **实施自动化监控预警体系**: 借助第三方插件持续跟踪关键指标变化趋势提前发现问题苗头. - **引入容器技术隔离依赖关系**: Docker/Kubernetes 等现代虚拟化手段可以帮助构建高度一致性的运行条件降低跨平台迁移难度的同时提升整体稳定性水平.[^1] --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值