最简单方式是用官方Tomcat镜像(如tomcat:9-jre11)通过docker run启动并挂载webapps目录;需配置tomcat-users.xml启用Manager权限;可扩展server.xml实现虚拟主机;生产推荐构建自定义镜像固化配置。

直接使用官方Tomcat镜像启动基础容器
最简单的方式是拉取官方Tomcat镜像(如 tomcat:9-jre11 或 tomcat:10-jre17),通过 docker run 启动:
- 运行命令示例:
docker run -d -p 8080:8080 --name my-tomcat -v /path/to/webapps:/usr/local/tomcat/webapps:ro tomcat:9-jre11 -
-v挂载自定义应用目录,避免每次重建容器丢失部署内容 - 默认首页可访问
http://localhost:8080,管理界面需额外配置用户权限(见下文)
配置Tomcat用户与Manager应用权限
要使用Web管理界面(/manager/html)或远程部署,必须在 conf/tomcat-users.xml 中添加角色和用户。推荐方式是通过挂载配置文件:
- 准备本地
tomcat-users.xml,包含如下内容:
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<user username="admin" password="123456" roles="manager-gui,manager-script"/>
</tomcat-users>
- 启动时挂载:
docker run -d -p 8080:8080 --name my-tomcat \<br> -v /path/to/tomcat-users.xml:/usr/local/tomcat/conf/tomcat-users.xml:ro \<br> -v /path/to/webapps:/usr/local/tomcat/webapps:ro \<br> tomcat:9-jre11
- 注意:Docker内默认不启用
manager应用的远程访问,若需curl部署,还需修改conf/Catalina/localhost/manager.xml,移除RemoteAddrValve限制(或注释掉该 Valve)
配置虚拟主机(Virtual Host)实现多域名/多路径服务
Docker中配置虚拟主机本质仍是修改Tomcat的 server.xml 和应用部署结构,关键点在于:
- 在
conf/server.xml的<Engine>内添加多个<Host>,例如:
unpackWARs="true" autoDeploy="true">
<Context path="" docBase="/usr/local/tomcat/webapps-app1/ROOT" />
</Host>
<Host name="app2.example.com" appBase="webapps-app2"\
unpackWARs="true" autoDeploy="true">
<Context path="" docBase="/usr/local/tomcat/webapps-app2/ROOT" />
</Host>
- 将自定义
server.xml和对应应用目录挂载进容器: -v /path/to/server.xml:/usr/local/tomcat/conf/server.xml:ro-v /path/to/webapps-app1:/usr/local/tomcat/webapps-app1:ro-v /path/to/webapps-app2:/usr/local/tomcat/webapps-app2:ro- 宿主机 hosts 文件临时加条目(如
127.0.0.1 app1.example.com app2.example.com)即可本地验证
构建自定义镜像固化配置更利于生产
频繁挂载配置文件适合开发调试;生产环境建议基于官方镜像构建专属镜像,把 server.xml、tomcat-users.xml 和默认应用一起打包:
- 新建
Dockerfile:
COPY server.xml /usr/local/tomcat/conf/
COPY tomcat-users.xml /usr/local/tomcat/conf/
COPY myapp.war /usr/local/tomcat/webapps/
EXPOSE 8080
- 构建并运行:
docker build -t my-tomcat-app .<br> docker run -d -p 8080:8080 --name prod-tomcat my-tomcat-app
- 优势:配置版本可控、启动快、无需依赖宿主机路径,也方便配合 Docker Compose 管理多服务

















