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管理页面)
- 编辑配置
bash
vi /usr/local/tomcat9/conf/tomcat-users.xml
文件末尾</tomcat-users>前添加:
xml
<role rolename="manager-gui"/>
<user username="admin" password="123456" roles="manager-gui"/>
- 重启tomcat
bash
docker restart tomcat9
- 访问管理页:
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