首页
/ GPMall电商平台Docker Compose部署指南

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

部署步骤

  1. 创建docker-compose.yml文件,复制上述配置内容
  2. 根据需要修改数据卷挂载路径
  3. 在终端中导航到包含docker-compose.yml的目录
  4. 执行以下命令启动所有服务:
docker-compose up -d
  1. 验证各服务是否正常运行:
docker-compose ps

常见问题解决

  1. 端口冲突:如果某些端口已被占用,可以修改ports配置中的主机端口部分
  2. 数据卷权限问题:确保挂载目录对Docker有读写权限
  3. 内存不足:Elasticsearch需要足够内存,可调整ES_JAVA_OPTS参数
  4. 服务启动顺序:某些服务有依赖关系,可使用depends_on或重启策略

最佳实践建议

  1. 生产环境应使用更复杂的密码替换默认密码
  2. 考虑使用Docker网络隔离服务
  3. 定期备份数据卷中的重要数据
  4. 监控容器资源使用情况
  5. 根据实际负载调整各服务的资源配置

通过本指南,您应该能够成功部署GPMall电商平台所需的基础设施服务。这些容器化服务为GPMall提供了数据库、搜索、消息队列等核心功能支持,为后续的应用部署打下了坚实基础。