Docker部署Tomcat9

Docker部署Tomcat9(宿主机目录:/usr/local/tomcat9)

适用:CentOS/RHEL、Ubuntu;已有宿主机JDK,无需容器内置JDK;采用「临时容器导出默认配置→目录挂载正式运行」方案。

一、前期准备

1. 确认Docker已正常运行

bash 复制代码
systemctl start docker
systemctl enable docker
docker info

2. 创建宿主机挂载目录(统一存放配置、项目、日志)

bash 复制代码
mkdir -p /usr/local/tomcat9/{webapps,conf,logs}

目录说明:

  • /usr/local/tomcat9/webapps:存放war项目、站点源码
  • /usr/local/tomcat9/conf:tomcat配置文件(server.xml、tomcat-users.xml)
  • /usr/local/tomcat9/logs:tomcat运行日志

二、拉取Tomcat9官方镜像(jre11版,稳定常用)

bash 复制代码
docker pull tomcat:9-jre11

三、创建临时容器 temp_tomcat(只用来拷贝默认文件,用完即删)

不后台启动,仅创建容器文件系统,无需运行服务

bash 复制代码
docker create --name temp_tomcat tomcat:9-jre11

四、从临时容器拷贝默认配置与首页资源(重点:规避docker cp不能用*)

4.1 拷贝conf全目录

bash 复制代码
docker cp temp_tomcat:/usr/local/tomcat/conf /usr/local/tomcat9/
# 将拷贝出来的conf内文件移到目标conf目录
mv /usr/local/tomcat9/conf/* /usr/local/tomcat9/conf/
rm -rf /usr/local/tomcat9/conf

4.2 拷贝默认首页(webapps.dist目录,新版tomcat9容器默认首页在此)

bash 复制代码
# 整目录拷贝dist到宿主机
docker cp temp_tomcat:/usr/local/tomcat/webapps.dist /usr/local/tomcat9/
# 把dist内所有内容移入webapps(实现自带首页,访问8080不404)
mv /usr/local/tomcat9/webapps.dist/* /usr/local/tomcat9/webapps/
# 删除多余dist文件夹
rm -rf /usr/local/tomcat9/webapps.dist

关键:docker cp不支持xxx/*通配符,先拷整个目录再宿主机mv拆分,彻底解决之前报错。

4.3 拷贝logs目录

bash 复制代码
docker cp temp_tomcat:/usr/local/tomcat/logs /usr/local/tomcat9/
mv /usr/local/tomcat9/logs/* /usr/local/tomcat9/logs/
rm -rf /usr/local/tomcat9/logs

4.4 删除临时容器

bash 复制代码
docker rm -f temp_tomcat

五、正式启动Tomcat9容器(目录持久化挂载)

bash 复制代码
docker run -d \
--name tomcat9 \
--network bridge \
-p 8086:8080 \
--restart always \
-u root \
-v /usr/local/tomcat9/webapps:/usr/local/tomcat/webapps \
-v /usr/local/tomcat9/conf:/usr/local/tomcat/conf \
-v /usr/local/tomcat9/logs:/usr/local/tomcat/logs \
tomcat:9-jre11

参数说明:

  • -p 8086:8080:宿主机8086映射容器8080,可自定义端口如-p 8081:8080
  • --restart always:开机自启、异常自动重启
  • -v:宿主机目录挂载容器,修改宿主机文件=修改容器配置,容器删除数据不丢失

六、放行防火墙端口(CentOS)

bash 复制代码
# firewalld放行8080和 8086
firewall-cmd --add-port=8080/tcp --permanent
firewall-cmd --add-port=8086/tcp --permanent
firewall-cmd --reload

云服务器额外去安全组放行8080和8086端口。

七、验证部署

1. 查看容器运行状态

bash 复制代码
docker ps |grep tomcat9
# 出现UP即启动成功

2. 浏览器访问

服务器IP:8086,正常打开Tomcat默认首页。

八、日常运维常用命令

1. 启停容器

bash 复制代码
# 停止
docker stop tomcat9
# 启动
docker start tomcat9
# 重启
docker restart tomcat9

2. 部署项目

直接把war包丢到宿主机 /usr/local/tomcat9/webapps/,tomcat自动解压部署 ,访问:IP:8080/项目名

3. 查看实时日志

bash 复制代码
docker logs -f tomcat9

4. 进入容器内部

bash 复制代码
docker exec -it tomcat9 /bin/bash

5. 修改配置

直接编辑宿主机/usr/local/tomcat9/conf/下配置文件,修改后docker restart tomcat9生效。

九、配置后台管理账号(可选,开启manager管理页面)

  1. 编辑配置
bash 复制代码
vi /usr/local/tomcat9/conf/tomcat-users.xml

文件末尾</tomcat-users>前添加:

xml 复制代码
<role rolename="manager-gui"/>
<user username="admin" password="123456" roles="manager-gui"/>
  1. 重启tomcat
bash 复制代码
docker restart tomcat9
  1. 访问管理页:IP:8086/manager/html,账号admin/123456

十、卸载tomcat(需要重装时)

bash 复制代码
# 停止并删除容器
docker rm -f tomcat9
# 删除镜像(可选)
docker rmi tomcat:9-jre11
# 删除宿主机所有文件(谨慎)
rm -rf /usr/local/tomcat9

上传 demo.war + 端口改为 8086

把你本地的 demo.war 上传到这个路径:

复制代码
/usr/local/tomcat9/webapps

访问方式

上传完等待 10 秒,自动部署成功!

  • Tomcat 首页:http://服务器IP:8086
  • 你的项目:http://服务器IP:8086/demo

防火墙放行 8086(必须执行)

bash 复制代码
firewall-cmd --add-port=8086/tcp --permanent
firewall-cmd --reload

相关推荐
萧瑟余晖25 分钟前
Java深入解析篇三十六之分布式系统详解
java·开发语言·分布式
KaKa_大王1 小时前
关于秒杀项目的一些理解
java·学习
tomla1 小时前
使用Java VisualVM观察过期对象引用现象
java
M1A11 小时前
Spring Boot YAML 配置读取完全指南:从基础到微服务
java
古法安卓1 小时前
Android-SELinux 策略调试实战:从 AVC 日志到策略修复
android·java·android studio
todoitbo1 小时前
飞算JavaAI的多租户权限隔离实测
java·springboot·ai编程·java开发·飞算javaai·java代码生成
星空1 小时前
Springboot复习
java·spring boot·spring
Dicky-_-zhang1 小时前
大模型部署架构:从推理引擎到弹性扩缩容的工程实践
java·jvm
左手厨刀右手茼蒿1 小时前
数据仓库的架构演进:从MySQL到ClickHouse到数据湖的工程化实践
linux·嵌入式·系统内核
左手厨刀右手茼蒿2 小时前
创业团队技术选型:别用大厂架构解决小团队问题
linux·嵌入式·系统内核