首页
/ XXPay支付系统Docker Compose部署指南

XXPay支付系统Docker Compose部署指南

2025-07-08 01:09:23作者:冯爽妲Honey

概述

XXPay支付系统是一个开源的支付解决方案,采用微服务架构设计。本文将详细介绍如何使用Docker Compose部署XXPay支付系统的各个组件,包括后端服务、前端界面以及所需的中间件。

系统架构

XXPay支付系统主要由以下组件构成:

  1. 核心服务

    • 支付服务(payment)
    • 管理后台服务(manager)
    • 商户服务(merchant)
  2. 前端界面

    • 支付前台(ui-payment)
    • 管理后台(ui-manager)
    • 商户后台(ui-merchant)
  3. 基础设施

    • MySQL数据库
    • Redis缓存
    • ActiveMQ消息队列

部署准备

在开始部署前,请确保已安装以下环境:

  • Docker 19.03+
  • Docker Compose 1.25+

详细配置解析

1. MySQL数据库服务

mysql:
  image: mysql:8
  environment:
    MYSQL_ROOT_PASSWORD: "rootroot"
    MYSQL_DATABASE: "jeepaydb"
    MYSQL_USER: "jeepay"
    MYSQL_PASSWORD: "jeepay"
  volumes:
    - mysql:/var/lib/mysql
    - ./docs/sql/init.sql:/docker-entrypoint-initdb.d/init.sql:ro

关键配置说明:

  • 使用MySQL 8官方镜像
  • 自动创建数据库(jeepaydb)和用户(jeepay)
  • 通过挂载init.sql文件实现数据库初始化
  • 数据持久化到mysql卷

2. Redis缓存服务

redis:
  image: redis:latest
  ports:
    - "6380:6379"
  volumes:
    - redis:/data

配置要点:

  • 使用最新版Redis官方镜像
  • 将默认6379端口映射到宿主机的6380端口
  • 数据持久化到redis卷

3. ActiveMQ消息队列

activemq:
  build:
    context: ./docker/activemq
    dockerfile: Dockerfile
  ports:
    - "8161:8161"  # 管理控制台
    - "61616:61616" # 消息端口
  volumes:
    - activemq:/opt/activemq
    - ./docker/activemq/activemq.xml:/opt/activemq/conf/activemq.xml

特性说明:

  • 使用自定义构建的ActiveMQ镜像
  • 暴露管理控制台端口(8161)和消息端口(61616)
  • 挂载自定义的activemq.xml配置文件
  • 数据持久化到activemq卷

4. 核心服务配置

XXPay的三个核心服务(payment、manager、merchant)配置类似,以payment服务为例:

payment:
  build:
    context: .
    dockerfile: Dockerfile
    args:
      PORT: 9216
      PLATFORM: payment
  ports:
    - "9216:9216"
  depends_on:
    - mysql
    - redis
    - activemq
  volumes:
    - ./logs/payment:/workspace/logs
    - ./conf/payment/application.yml:/workspace/application.yml

关键点:

  • 通过Dockerfile构建镜像
  • 每个服务使用不同的端口(payment:9216, manager:9217, merchant:9218)
  • 依赖mysql、redis和activemq服务
  • 挂载日志目录和配置文件实现持久化

5. 前端服务配置

前端服务同样有三个,以ui-payment为例:

ui-payment:
  build:
    context: ${UI_BASE_DIR}/jeepay-ui
    dockerfile: Dockerfile
    args:
      PLATFORM: cashier
  environment:
    - BACKEND_HOST=172.20.0.21:9216
  ports:
    - "9226:80"

配置说明:

  • 基于jeepay-ui项目构建
  • 不同平台使用不同参数(manager/merchant/cashier)
  • 通过环境变量配置后端API地址
  • 端口映射(ui-payment:9226, ui-manager:9227, ui-merchant:9228)

网络配置

networks:
  jeepay:
    ipam:
      config:
        - subnet: 172.20.0.0/16

网络规划:

  • 自定义jeepay网络
  • 使用172.20.0.0/16子网
  • 为每个容器分配固定IP地址,便于服务间通信

数据持久化

volumes:
  mysql:
  redis:
  activemq:

通过Docker卷实现以下数据的持久化:

  • MySQL数据库文件
  • Redis数据
  • ActiveMQ消息数据

部署命令

  1. 构建依赖(首次部署或修改MQ配置时需要):

    docker build -t jeepay-deps:latest -f docs/Dockerfile .
    
  2. 启动服务

    docker-compose up -d
    
  3. 其他常用命令

    • 重新构建并启动:docker-compose up --build
    • 强制重新创建容器:docker-compose up --force-recreate
    • 完全重新构建:docker-compose up --build --force-recreate

注意事项

  1. 前端构建需要先获取子模块或单独克隆前端项目
  2. 配置文件(application.yml)需要提前准备好并放在正确位置
  3. 首次启动时MySQL初始化可能需要较长时间
  4. 生产环境建议配置Nginx反向代理和HTTPS

扩展选项

配置文件中还提供了其他消息队列的配置选项,包括:

  • RabbitMQ(支持延迟消息插件)
  • RocketMQ(名称服务和broker)

如需使用这些替代方案,只需取消注释相应配置并注释掉ActiveMQ部分即可。

通过本文介绍的Docker Compose部署方式,您可以快速搭建XXPay支付系统的完整环境,便于开发测试或生产部署。根据实际需求,您可以进一步调整资源配置、网络设置和安全策略。