Docker集成:MySQL、Tomcat

Docker集成MySQL与Tomcat

一、核心概念
  1. 容器化架构
    MySQL和Tomcat作为独立容器运行,通过Docker网络通信
  2. 数据持久化
    使用Docker卷保存MySQL数据和Tomcat应用
  3. 服务编排
    推荐使用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
五、验证部署
  1. MySQL连接测试:
    docker exec -it mysql-server mysql -u root -p
    
  2. Tomcat访问:
    http://localhost:8080
  3. 应用数据库连接:
    查看Tomcat日志验证连接状态
    docker logs tomcat-server
    
六、注意事项
  1. 启动顺序
    使用depends_on确保MySQL先启动
  2. 数据安全
    敏感信息(密码)建议使用Docker secrets
  3. 性能优化
    MySQL容器添加内存限制:
    deploy:
      resources:
        limits:
          memory: 2g
    
  4. 时区同步
    容器添加环境变量:TZ=Asia/Shanghai

通过此方案,可实现生产级MySQL+Tomcat容器化部署,具备服务隔离、数据持久化和网络通信能力。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值