Docker Compose 部署 Tomcat
Docker Compose 是部署 Tomcat 服务的理想工具,它可以通过一个简单的 YAML 文件定义和运行 Tomcat 容器。下面我将详细介绍如何使用 Docker Compose 部署 Tomcat,包括基础配置、生产环境优化以及常见问题解决方案。
1. 基础部署配置
1.1 创建项目目录结构
首先创建一个标准的目录结构来管理 Tomcat 配置和应用程序文件:
tomcat-compose/
├── docker-compose.yml
├── webapps/ # 存放WAR包的目录
└── conf/ # 自定义配置文件目录
1.2 基础 docker-compose.yml 配置
在项目根目录创建docker-compose.yml
文件,内容如下:
yaml
version: "3.8"
services:
tomcat:
image: tomcat:latest # 或指定版本如tomcat:9-jdk8-openjdk
container_name: my-tomcat
ports:
- "8080:8080" # 主机端口:容器端口
volumes:
- ./webapps:/usr/local/tomcat/webapps # 挂载应用程序目录
- ./conf/server.xml:/usr/local/tomcat/conf/server.xml # 自定义配置
environment:
- TZ=Asia/Shanghai # 设置时区
restart: unless-stopped
这个配置定义了一个 Tomcat 服务,使用官方最新镜像,将容器的 8080 端口映射到主机的 8080 端口,并挂载了 webapps 目录和配置文件。
1.3 启动 Tomcat 容器
运行以下命令构建并启动容器:
bash
docker-compose up -d
-d
参数让容器在后台运行。启动后可以通过http://localhost:8080
访问 Tomcat 默认页面。
2. 高级配置选项
2.1 部署 WAR 应用程序
有两种方式部署 WAR 应用到 Tomcat 容器:
方式一:通过 volumes 挂载
yaml
volumes:
- ./myapp.war:/usr/local/tomcat/webapps/myapp.war
方式二:通过 Dockerfile 构建
创建Dockerfile
:
dockerfile
FROM tomcat:latest
COPY ./myapp.war /usr/local/tomcat/webapps/
然后在docker-compose.yml
中使用 build 指令:
yaml
services:
tomcat:
build: .
ports:
- "8080:8080"
这种方式适合需要自定义镜像的场景。
2.2 配置 JVM 参数
可以通过环境变量配置 Tomcat 的 JVM 参数:
yaml
environment:
- CATALINA_OPTS=-Xms512M -Xmx1024M -Djava.awt.headless=true
2.3 数据库集成
Tomcat 通常需要连接数据库,可以添加 MySQL 服务:
yaml
services:
tomcat:
# ...原有配置
depends_on:
- db
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: root123
MYSQL_DATABASE: mydb
volumes:
- mysql-data:/var/lib/mysql
ports:
- "3306:3306"
volumes:
mysql-data:
然后在 Tomcat 应用中配置数据库连接池指向db:3306
。
3. 生产环境优化
3.1 资源限制
yaml
services:
tomcat:
# ...其他配置
deploy:
resources:
limits:
cpus: "1"
memory: 2G
3.2 健康检查
yaml
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8080"]
interval: 30s
timeout: 10s
retries: 3
3.3 日志配置
yaml
volumes:
- ./logs:/usr/local/tomcat/logs
4. 常见问题与解决方案
端口冲突:
- 修改
docker-compose.yml
中的端口映射:"8081:8080"
- 修改
时区问题:
- 确保设置
TZ
环境变量:TZ=Asia/Shanghai
- 确保设置
应用部署失败:
- 检查 WAR 文件权限和挂载路径是否正确
性能问题:
- 调整 JVM 参数和资源限制
5. 常用命令参考
命令 | 描述 |
---|---|
docker-compose up -d | 启动服务(后台模式) |
docker-compose down | 停止并移除容器 |
docker-compose logs -f tomcat | 查看 Tomcat 日志 |
docker-compose ps | 查看服务状态 |
docker-compose exec tomcat bash | 进入容器 shell |
docker-compose restart tomcat | 重启 Tomcat 服务 |
通过以上配置和最佳实践,你可以轻松地使用 Docker Compose 部署 Tomcat 服务,无论是开发环境还是生产环境。根据你的具体需求,可以调整配置中的参数和选项。