Tomcat Docker 官方镜像新手指南:5 分钟跑通你的第一个 Tomcat 容器
【免费下载链接】tomcatDocker Official Image packaging for Apache Tomcat项目地址: https://gitcode.com/gh_mirrors/to/tomcat
Apache Tomcat 是最流行的 Java Web 服务器之一,而Tomcat Docker 官方镜像就是 Docker 上运行 Tomcat 的标准方式,由 Docker 社区团队维护。本项目(gh_mirrors/to/tomcat)正是这份官方镜像的打包源码仓库,覆盖 Tomcat9.0、10.1、11.0三大版本系列,并搭配 Java 8 到 Java 25 的多种 Java 版本。这篇新手指南将带你用 5 分钟、一行docker run命令跑通你的第一个 Tomcat 容器,并部署第一个 Web 应用,全程无需安装任何 Java 环境。
一、为什么选择 Tomcat Docker 官方镜像?🚀
对新手来说,直接用官方镜像有四大好处:
- 开箱即用:镜像内置 Java 运行时、Tomcat 以及编译好的 Tomcat Native 加速库,不用手动配置任何环境
- 版本自由:3 个大版本 × 多个 Java 版本任意组合,清单见 versions.json
- 安全可信:构建时会对 Tomcat 安装包做 SHA512 校验 + GPG 签名验证,确保来源可靠
- 标准化运维:默认以非 root 用户运行、已移除自带的示例应用,镜像干净利落
二、镜像版本怎么选:Tomcat 9、10 还是 11?
版本信息定义在 versions.json 中,目前仓库维护的版本如下:
| Tomcat 系列 | 当前版本 | 支持的 Java 版本 | 适合谁 |
|---|---|---|---|
| 9.0 | 9.0.121 | 8 / 11 / 17 / 21 / 25 | 使用javax.servlet的存量项目 |
| 10.1 | 10.1.59 | 11 / 17 / 21 / 25 | 新项目的主流之选(jakarta.servlet) |
| 11.0 | 11.0.25 | 17 / 21 / 25 | 面向未来的长期支持系列 |
每个系列下还有两类子变体,理解镜像标签(tag)命名就简单了:
jdkvsjre:jdk带完整 JDK,可在线编译 JSP;jre只含运行时,镜像更小,适合部署预先编译好的应用temurin-jammyvstemurin-noble:基于 Ubuntu 22.04 或 24.04 的 Eclipse Temurin(Adoptium)Java
组合示例:tomcat:10.1-jdk21表示 Tomcat 10.1 系列 + Java 21 JDK。
三、5 分钟快速启动:运行你的第一个 Tomcat 容器 ⏱️
只需提前装好 Docker,然后三步走:
# 1. 拉取镜像(约 500MB,视网速等待几分钟) docker pull tomcat:10.1-jdk21 # 2. 启动容器,把容器的 8080 端口映射到本机 8080 docker run --name tomcat-test -p 8080:8080 -d tomcat:10.1-jdk21 # 3. 查看日志,确认 Tomcat 启动成功 docker logs tomcat-test看到Server startup in [xxx] milliseconds字样,说明你的第一个 Tomcat 容器已经跑起来了!🎉
💡 小提示:镜像默认把工作目录设为
/usr/local/tomcat(即CATALINA_HOME),并默认执行catalina.sh run启动,这些约定在 Dockerfile.template 中定义。
四、部署第一个 Web 应用:挂载 webapps 目录
官方镜像出于安全考虑,把自带示例应用移到了webapps.dist目录,容器内webapps默认为空。所以访问http://localhost:8080会 404——别慌,这正是让你部署自己的应用:
# 准备本地目录,放入你的 WAR 包或展开后的 Web 目录 mkdir -p ./myapp && cp myapp.war ./myapp/ # 挂载到容器的 webapps,Tomcat 会自动部署 docker run --name tomcat-app \ -p 8080:8080 \ -v $(pwd)/myapp:/usr/local/tomcat/webapps/myapp \ -d tomcat:10.1-jdk21随后访问http://localhost:8080/myapp,看到你的应用页面,恭喜通关!🏁
五、镜像是怎么构建的?(进阶选读)🔍
如果你想了解这份官方镜像的打包原理,可以克隆仓库自行研读:
git clone https://gitcode.com/gh_mirrors/to/tomcat核心文件一览:
versions.json:记录每个 Tomcat 系列的版本号、SHA512 校验值和全部变体清单Dockerfile.template:Dockerfile 模板。依次完成:下载 Tomcat → GPG 签名验证 → 编译 Tomcat Native → 清空默认应用 → 修正非 root 运行权限 → 暴露 8080 端口 → 设置默认启动命令apply-templates.sh:按「版本 × 变体」组合,从模板批量生成各目录下的独立 Dockerfileupdate.sh:一键刷新版本信息并重新生成所有 Dockerfilefrom.jq/shared.jq:模板辅助函数,负责推导 Java 基础镜像和校验 Java 版本兼容性10.1/jdk21/temurin-noble/Dockerfile:一份生成产物的实例,可直接查看最终构建过程
六、常见问题速查表 📋
| 问题 | 解决办法 |
|---|---|
| 提示端口 8080 已被占用 | 换宿主机端口:-p 8081:8080,访问http://localhost:8081 |
| 启动后访问 404 | webapps默认为空,按上一节挂载你的应用 |
| 容器内存不够 | 通过环境变量限制堆内存:docker run -e JAVA_OPTS="-Xms128m -Xmx256m" ... |
| 挂载目录后应用不可写 | 镜像默认非 root(uid 1000)运行,宿主机挂载目录需保证可写权限 |
| 应用是纯 JSP 需在线编译 | 选jdk变体(如tomcat:10.1-jdk21),jre变体不含编译器 |
七、写在最后
现在你已经掌握了 Tomcat Docker 官方镜像的核心用法:一行命令拉起容器、挂载 webapps 部署应用、按项目需求挑选版本与 Java 变体。日常开发调试用jdk变体最省心,生产环境追求精简可以换jre变体。建议新项目优先使用 Tomcat 10.1(jakarta.servlet已成为新标准)。祝你的容器之路顺利!
【免费下载链接】tomcatDocker Official Image packaging for Apache Tomcat项目地址: https://gitcode.com/gh_mirrors/to/tomcat
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考