Mall4j项目Docker Compose部署指南
2025-07-08 06:22:30作者:董灵辛Dennis
概述
Mall4j是一个基于Java开发的电商系统,本文主要介绍如何使用Docker Compose快速部署Mall4j项目的完整环境。通过Docker容器化技术,我们可以轻松搭建包含MySQL数据库、Redis缓存以及前后端服务的完整电商系统。
环境准备
在开始部署前,请确保您的系统已安装以下组件:
- Docker 18.06+
- Docker Compose 1.25+
服务架构解析
Mall4j的Docker Compose配置定义了四个核心服务:
- MySQL数据库服务:存储系统所有业务数据
- Redis缓存服务:提供高速缓存支持
- Admin后台服务:管理系统后台
- API接口服务:提供前端调用的API接口
详细配置说明
MySQL服务配置
mall4j-mysql:
build:
context: ./
dockerfile: ./db/Dockerfile
environment:
MYSQL_ROOT_PASSWORD: root
restart: always
container_name: mall4j-mysql
image: mall4j-mysql
ports:
- 3306:3306
volumes:
- ./mall4j-mysql:/var/lib/mysql
command: --lower_case_table_names=1
关键配置点:
- 使用自定义Dockerfile构建MySQL镜像
- 设置root用户密码为"root"
- 数据持久化到本地
./mall4j-mysql
目录 lower_case_table_names=1
参数确保表名大小写不敏感- 默认暴露3306端口
Redis服务配置
mall4j-redis:
image: redis:5.0.4
restart: always
container_name: mall4j-redis
ports:
- 6379:6379
关键配置点:
- 使用官方Redis 5.0.4镜像
- 默认暴露6379端口
- 自动重启策略确保服务高可用
Admin后台服务配置
mall4j-admin:
build:
context: ./
dockerfile: ./yami-shop-admin/Dockerfile
restart: always
container_name: mall4j-admin
environment:
- REDIS_HOST=mall4j-redis
- REDIS_PORT=6379
- REDIS_DATABASE=1
image: mall4j-admin
ports:
- 8085:8085
depends_on:
- mall4j-redis
- mall4j-mysql
links:
- "mall4j-redis"
- "mall4j-mysql"
关键配置点:
- 使用自定义Dockerfile构建后台服务
- 配置Redis连接信息
- 暴露8085端口供外部访问
- 依赖MySQL和Redis服务
- 通过links建立服务间网络连接
API接口服务配置
mall4j-api:
build:
context: ./
dockerfile: ./yami-shop-api/Dockerfile
restart: always
container_name: mall4j-api
environment:
- REDIS_HOST=mall4j-redis
- REDIS_PORT=6379
- REDIS_DATABASE=1
image: mall4j-api
ports:
- 8086:8086
depends_on:
- mall4j-redis
- mall4j-mysql
links:
- "mall4j-redis"
- "mall4j-mysql"
关键配置点:
- 使用自定义Dockerfile构建API服务
- 配置与后台服务相同的Redis连接
- 暴露8086端口供前端调用
- 同样依赖MySQL和Redis服务
部署步骤
- 确保Docker和Docker Compose已正确安装
- 将docker-compose.yml文件放置到项目根目录
- 在终端中执行以下命令:
docker-compose up -d
- 等待所有服务启动完成
- 验证服务是否正常运行:
- 访问
http://localhost:8085
查看后台服务 - 访问
http://localhost:8086
测试API服务
- 访问
常见问题解决
- 端口冲突:如果3306、6379、8085或8086端口已被占用,请修改docker-compose.yml中的端口映射
- 构建失败:确保项目目录结构正确,所有Dockerfile文件存在
- 数据库初始化问题:检查MySQL数据目录权限,确保Docker有写入权限
- 服务启动顺序:虽然配置了depends_on,但服务完全就绪可能需要额外等待时间
生产环境建议
- 修改默认的root密码为更复杂的密码
- 配置MySQL和Redis的持久化策略
- 考虑添加Nginx作为反向代理
- 设置适当的资源限制(CPU、内存)
- 配置日志轮转和监控
总结
通过本文介绍的Docker Compose配置,开发者可以快速搭建Mall4j项目的完整运行环境。这种容器化的部署方式不仅简化了环境配置过程,还提高了开发、测试和生产环境的一致性。对于电商系统这类复杂应用,使用Docker Compose管理多服务依赖关系是一种高效可靠的解决方案。