Docker集成MySQL与Tomcat
一、核心概念
- 容器化架构
MySQL和Tomcat作为独立容器运行,通过Docker网络通信 - 数据持久化
使用Docker卷保存MySQL数据和Tomcat应用 - 服务编排
推荐使用docker-compose管理多容器部署
二、部署步骤
1. 创建Docker网络(容器通信基础)
docker network create app-network
2. 部署MySQL容器
docker run -d \
--name mysql-server \
--network app-network \
-e MYSQL_ROOT_PASSWORD=your_password \
-e MYSQL_DATABASE=appdb \
-v mysql-data:/var/lib/mysql \
mysql:8.0
-v mysql-data:数据卷持久化--network:加入应用网络- 环境变量说明:
MYSQL_ROOT_PASSWORD:root密码MYSQL_DATABASE:初始数据库
3. 部署Tomcat容器
docker run -d \
--name tomcat-server \
--network app-network \
-p 8080:8080 \
-v tomcat-webapps:/usr/local/tomcat/webapps \
tomcat:9.0
-p 8080:8080:暴露Web端口-v tomcat-webapps:应用部署目录
三、应用连接配置
在Tomcat应用的context.xml中配置MySQL连接:
<Resource
name="jdbc/appDB"
auth="Container"
type="javax.sql.DataSource"
username="root"
password="your_password"
driverClassName="com.mysql.cj.jdbc.Driver"
url="jdbc:mysql://mysql-server:3306/appdb?useSSL=false"
/>
关键点:mysql-server是容器服务名,通过Docker网络DNS自动解析
四、使用Docker Compose(推荐)
创建docker-compose.yml:
version: '3.8'
services:
mysql:
image: mysql:8.0
container_name: mysql-server
environment:
MYSQL_ROOT_PASSWORD: your_password
MYSQL_DATABASE: appdb
volumes:
- mysql-data:/var/lib/mysql
networks:
- app-net
tomcat:
image: tomcat:9.0
container_name: tomcat-server
ports:
- "8080:8080"
volumes:
- ./webapp.war:/usr/local/tomcat/webapps/app.war
networks:
- app-net
depends_on:
- mysql
volumes:
mysql-data:
networks:
app-net:
driver: bridge
启动命令:
docker-compose up -d
五、验证部署
- MySQL连接测试:
docker exec -it mysql-server mysql -u root -p - Tomcat访问:
http://localhost:8080 - 应用数据库连接:
查看Tomcat日志验证连接状态docker logs tomcat-server
六、注意事项
- 启动顺序
使用depends_on确保MySQL先启动 - 数据安全
敏感信息(密码)建议使用Docker secrets - 性能优化
MySQL容器添加内存限制:deploy: resources: limits: memory: 2g - 时区同步
容器添加环境变量:TZ=Asia/Shanghai
通过此方案,可实现生产级MySQL+Tomcat容器化部署,具备服务隔离、数据持久化和网络通信能力。
1049

被折叠的 条评论
为什么被折叠?



