GPMall电商平台Docker Compose部署指南
2025-07-08 04:04:32作者:房伟宁
概述
GPMall是一个基于微服务架构的电商平台项目,本指南将详细介绍如何使用Docker Compose快速部署GPMall所需的各种基础设施服务。通过Docker容器化技术,我们可以轻松搭建包含MySQL、Elasticsearch、Kibana、Kafka、Redis、Zookeeper和RabbitMQ等组件的完整开发环境。
环境准备
在开始部署前,请确保您的系统已安装以下软件:
- Docker 18.06+
- Docker Compose 1.22+
服务组件详解
1. MySQL数据库服务
db1:
image: mysql
ports:
- "3306:3306"
environment:
- MYSQL_ROOT_PASSWORD=123456
- MYSQL_DATABASE=gpmall
volumes:
- "/Users/wangzhong/datas/mysql:/var/lib/mysql"
配置说明:
- 使用官方MySQL镜像
- 暴露标准3306端口
- 设置root密码为123456
- 自动创建名为gpmall的数据库
- 挂载数据卷实现数据持久化
2. Elasticsearch搜索服务
elasticsearch:
image: elasticsearch:6.6.1
environment:
- cluster.name=elasticsearch
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
ports:
- 9200:9200
- 9300:9300
volumes:
- "/Users/wangzhong/datas/es/data:/usr/share/elasticsearch/data"
配置说明:
- 使用Elasticsearch 6.6.1版本
- 配置内存锁定和JVM堆大小
- 暴露9200(REST API)和9300(集群通信)端口
- 挂载数据卷实现数据持久化
3. Kibana可视化工具
kibana:
image: kibana:6.6.1
environment:
SERVER_NAME:
ELASTICSEARCH_HOSTS: http://localhost:9200
ports:
- 5601:5601
配置说明:
- 使用与Elasticsearch版本匹配的Kibana 6.6.1
- 配置连接到本地Elasticsearch服务
- 暴露5601端口用于Web访问
4. Kafka消息队列服务
kafka:
image: wurstmeister/kafka
ports:
- "9092:9092"
environment:
KAFKA_ADVERTISED_HOST_NAME: localhost
KAFKA_ADVERTISED_PORT: 9092
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
配置说明:
- 使用wurstmeister/kafka镜像
- 暴露9092端口
- 配置Kafka广播地址和端口
- 连接到Zookeeper服务
5. Redis缓存服务
redis:
image: redis
ports:
- "6379:6379"
配置说明:
- 使用官方Redis镜像
- 暴露标准6379端口
6. Zookeeper协调服务
zookeeper:
image: wurstmeister/zookeeper
ports:
- "2181:2181"
配置说明:
- 使用wurstmeister/zookeeper镜像
- 暴露标准2181端口
7. RabbitMQ消息队列服务
rabbitmq:
image: rabbitmq:management
ports:
- "4369:4369"
- "5671:5671"
- "25672:25672"
- "5672:5672"
- "15672:15672"
container_name: rabbitmq
hostname: rabbitmq
environment:
RABBITMQ_DEFAULT_USER: rabbitmq
RABBITMQ_DEFAULT_PASS: 123456
RABBITMQ_NODENAME: rabbitmq
RABBITMQ_ERLANG_COOKIE: CURIOAPPLICATION
配置说明:
- 使用带管理界面的RabbitMQ镜像
- 暴露多个端口用于不同协议和管理界面
- 设置默认用户rabbitmq/123456
- 配置节点名称和Erlang cookie
部署步骤
- 创建docker-compose.yml文件,复制上述配置内容
- 根据需要修改数据卷挂载路径
- 在终端中导航到包含docker-compose.yml的目录
- 执行以下命令启动所有服务:
docker-compose up -d
- 验证各服务是否正常运行:
docker-compose ps
常见问题解决
- 端口冲突:如果某些端口已被占用,可以修改ports配置中的主机端口部分
- 数据卷权限问题:确保挂载目录对Docker有读写权限
- 内存不足:Elasticsearch需要足够内存,可调整ES_JAVA_OPTS参数
- 服务启动顺序:某些服务有依赖关系,可使用depends_on或重启策略
最佳实践建议
- 生产环境应使用更复杂的密码替换默认密码
- 考虑使用Docker网络隔离服务
- 定期备份数据卷中的重要数据
- 监控容器资源使用情况
- 根据实际负载调整各服务的资源配置
通过本指南,您应该能够成功部署GPMall电商平台所需的基础设施服务。这些容器化服务为GPMall提供了数据库、搜索、消息队列等核心功能支持,为后续的应用部署打下了坚实基础。