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

相关推荐
2301_803538952 小时前
CentOS版本差异详解和系统信息查看方法
linux·运维·centos
Cx330❀2 小时前
【Qt 核心机制篇】深度解析 Qt 信号与槽(Signals & Slots)机制:从底层原理、实战演练到 Lambda 进阶
linux·开发语言·c++·人工智能·qt·ubuntu
田里的水稻2 小时前
OE_临时配置网络_linux系统终端命令行ip setting
linux·网络·tcp/ip
西安邮电大学2 小时前
Kafka如何避免重复消费
java·后端·其他·面试·kafka
IT策士2 小时前
第14篇 Docker Compose 开发环境最佳实践:热重载与调试
运维·docker·容器
ppandss12 小时前
JavaWeb从0到1-DAY11-MyBatis入门
java·tomcat·mybatis
Cx330❀2 小时前
【Linux网络】从零构建高性能UDP服务器:从Echo到英译汉业务级实现
大数据·linux·服务器·开发语言·网络·c++·udp
正在走向自律2 小时前
架构进阶:从 Docker 环境变量到 Nacos 统一配置中心实战
docker·容器·架构
闪电悠米2 小时前
黑马点评-优惠券秒杀-03_basic_seckill_and_oversell
java·数据库·spring boot·spring·缓存·oracle·面试