记录一次docker搭建tomcat容器的网页不能访问的问题

tomcat

Tomcat是Apache软件基金会的Jakarta项目中的一个重要子项目,是一个Web服务器,也是Java应用服务器,是开源免费的软件。它是一个兼容Java Servlet和JavaServer Pages(JSP)的Web服务器,可以作为独立的Web服务器,也可以与其他Web服务器(比如Apache)配合使用。它采用Java编写,支持跨平台性,可以在Windows、Linux等多种操作系统上运行。

Tomcat的主要功能包括:

  1. Servlet容器:Tomcat可以解析Servlet和JSP,执行相应的Java代码,并将其转化为HTML页面发送给客户端。

  2. 静态页面服务:Tomcat支持静态页面,可以将客户端请求的静态页面直接发送给客户端。

  3. 连接池:可以管理数据库连接,提高系统性能。

  4. 虚拟主机:Tomcat可以支持多个虚拟主机,一个Tomcat实例可以托管多个网站。

  5. 安全性:Tomcat提供基于角色的访问控制,可以限制用户只能访问特定的应用程序。同时还支持SSL和数字证书。

总之,Tomcat是一个可靠稳定的Web应用服务器,在开发和运行Java Web应用方面极其重要。

使用场景

当前端打包的文件时使用npm build的时候,在访问的时候需要在linux的服务器进行部署,有两种方案,一种是使用nginx镜像,一种是使用tomcat镜像,因为是简单的测试版本,这里就使用tomcat镜像,以方在测试过程中影响nginx的正常使用

部署过程

创建dockerfile文件

复制代码
FROM tomcat:9

# 复制静态网页到 Tomcat 发布目录中
COPY ./demo  /usr/local/tomcat/webapps/demo/

将前端文件放在该路径下

创建镜像

bash 复制代码
docker build -t demo:1.0 .

运行容器

bash 复制代码
docker run -itd --name demo --restart always -p 8080:8080 demo:1.0 bash

收工!!!

发生问题

部署完成后,前端同事反映访问ip:8080/demo无法打开网页,我开始认为是浏览器缓存,就让他清理缓存再试一次,反应还是不行。排查了很久,包括网络,docker的版本(但是之前的可以运行),代码,容器的状态,日志等,还是没找到问题。。。。。

解决

于是向领导反映这个问题,领导看了一下现象又看了一下容器的状态,就说你一定是用itd启动的,改成id

删掉原本的容器

bash 复制代码
docker rm -f demo

重新创建容器

bash 复制代码
docker run -id --name demo --restart always -p 8080:8080 demo:1.0

访问成功

查找原因

后来我自己私下查看资料发现

使用itd参数创建Tomcat容器可能会导致网页无法访问的问题,这是因为itd参数会在前台启动Tomcat容器,并且容器会在启动后立即退出。这意味着Tomcat容器只会运行一次,然后就会停止,因此您无法访问网页。

相关推荐
一只栖枝3 分钟前
华为 HCIE 大数据认证中 Linux 命令行的运用及价值
大数据·linux·运维·华为·华为认证·hcie·it
uzong2 小时前
技术故障复盘模版
后端
GetcharZp2 小时前
基于 Dify + 通义千问的多模态大模型 搭建发票识别 Agent
后端·llm·agent
wuicer2 小时前
ubuntu 20.04 安装anaconda以及安装spyder
linux·运维·ubuntu
桦说编程2 小时前
Java 中如何创建不可变类型
java·后端·函数式编程
lifallen2 小时前
Java Stream sort算子实现:SortedOps
java·开发语言
IT毕设实战小研2 小时前
基于Spring Boot 4s店车辆管理系统 租车管理系统 停车位管理系统 智慧车辆管理系统
java·开发语言·spring boot·后端·spring·毕业设计·课程设计
wyiyiyi3 小时前
【Web后端】Django、flask及其场景——以构建系统原型为例
前端·数据库·后端·python·django·flask
没有bug.的程序员3 小时前
JVM 总览与运行原理:深入Java虚拟机的核心引擎
java·jvm·python·虚拟机
甄超锋4 小时前
Java ArrayList的介绍及用法
java·windows·spring boot·python·spring·spring cloud·tomcat