docker一键搭建云原生电商测试系统:通过docker-compose.yml编排mysql、redis、nacos等七类服务,统一bridge网络实现互通,支持远程调试、热加载、健康检查与多环境复用。

用 Docker 快速搭建云原生分布式电商测试系统,核心是“轻量启动、服务自治、网络互通、开箱可调”。不装中间件、不配环境变量、不改代码——所有服务(含 MySQL、Redis、Nacos、网关、用户/商品/订单等)统一通过 docker-compose.yml 编排,一键拉起完整拓扑,本地即具备生产级通信能力与调试支持。
一、基础环境:一键装好 Docker + Compose 并加速
跳过 Docker Desktop 或手动安装步骤。直接在 Linux/macOS/WSL2 上执行官方兼容脚本:
- 运行
bash (自动安装 Docker 和 Compose v2.27+) - 脚本内置配置国内轩辕镜像源,避免拉取 MySQL、Nacos、Elasticsearch 等镜像卡顿
- 验证:执行
docker --version和docker compose version,均有输出即就绪
二、服务编排:用 docker-compose.yml 定义全栈拓扑
把整个电商测试系统写进一个 YAML 文件,包含七类关键组件:
-
数据层:MySQL 主从集群(挂载初始化 SQL)、Redis 集群(启用
cluster-enabled yes) - 搜索与追踪:Elasticsearch(暴露 9200)、Zipkin(收集链路数据,采样率设为 0.1)
- 注册与配置:Nacos 单机模式(端口 8848,持久化配置到 volume)
- 网关与服务:Spring Cloud Gateway(路由规则注入环境变量)、用户服务(Java)、商品服务(Node.js)、订单服务(Python Flask)、支付服务(Node.js)
- 入口与可观测:Traefik 作为反向代理(自动发现服务、HTTPS 支持)、Prometheus + Grafana(监控指标采集)
每个服务声明 depends_on(如订单服务依赖 mysql 和 user-service),并加入同一自定义 bridge 网络(如 ecommerce-net),服务间直连用 service-name:port(如 nacos:8848)。
三、让服务真正“可测可调”
仿真环境不止能跑起来,更要支持联调、断点、日志追踪和健康判断:
-
远程调试:为每个 Spring Boot 服务添加 JVM 参数
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005,并在ports中映射5005:5005;VS Code 或 IDEA 可直连调试 -
热加载支持:Java 服务用 Spring DevTools + volume 挂载
target/classes;Node.js 服务用nodemon监听源码变化;Python 服务用watchdog触发重启 -
日志与健康检查:每个服务配置
healthcheck(如 curl -f http://localhost:8080/actuator/health);日志统一用json-file驱动,并挂载./logs/user:/app/logs到本地
四、快速迭代与复用技巧
避免每次改完代码都重 build 镜像:
- 开发阶段优先用
build:而非image:,Dockerfile 写成多阶段:构建阶段用 maven/node/python 全量环境,运行阶段只复制 jar/dist 文件,镜像体积控制在 150MB 以内 - 敏感配置(如数据库密码)不硬编码,改用
env_file引入.env,或通过environment动态注入SPRING_PROFILES_ACTIVE=test - 为不同场景准备多套 compose 文件:
docker-compose.yml(基础版)、docker-compose.test.yml(含 Zipkin + Prometheus)、docker-compose.debug.yml(全开调试端口)











