用 docker compose 搭建高可用微服务测试环境的核心是:创建自定义 bridge 网络实现服务名通信、配置 healthcheck 与 replicas 保障实例就绪与冗余、通过 docker-compose down/up 快速重建环境、版本化配置与分层构建镜像确保可复现与高效协作。

直接用 Docker Compose 搭建高可用微服务测试环境,核心是让多个服务实例稳定运行、自动发现、按需伸缩,同时避免环境漂移。不需要上 Kubernetes,Docker 自带能力就能满足大部分测试场景。
选对网络模式:用自定义 bridge 网络打通服务通信
默认的 bridge 网络不支持容器名解析,服务之间只能靠 IP 通信,一重启就失效。必须创建自定义桥接网络,让容器能通过服务名互相访问:
- 执行 docker network create my-test-net 创建独立网络
- 所有服务在 docker-compose.yml 中统一指定 networks: - my-test-net
- 这样 user-service 就能直接用 http://order-service:8080 调用,无需写死 IP
服务多副本 + 健康检查:保证“启动即可用”
测试环境不是启动完就完事,得确认服务真就绪了再让下游调用,否则测试总失败。关键两步:
- 每个服务加 healthcheck,比如检测 HTTP 接口返回 200:
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8080/actuator/health"]
interval: 30s
timeout: 5s
retries: 3 - 用 deploy: replicas: 2 启动双实例(Spring Cloud 或 Nacos 注册中心建议至少 2 个)
- 配合 depends_on: {service: condition: service_healthy} 控制依赖顺序
一键构建 + 秒级销毁:回归测试不卡壳
每次回归前清理旧环境、拉镜像、等服务就绪,手动操作太慢。推荐标准化流程:
- 用 docker-compose down -v 彻底清除容器和卷(含测试数据库数据)
- 用 docker-compose up -d --build --force-recreate 重建全链路
- 实测 20+ 微服务从零启动到全部健康,通常在 60 秒内完成
- 测试脚本里直接访问 http://order-service:8080,不用走宿主机端口映射,更快更稳
配置版本化 + 镜像缓存:团队协作不踩坑
测试环境不是个人玩具,要可复现、可追溯:
- docker-compose.yml 和 .env 文件全部提交 Git,做到“环境即代码”
- 业务镜像用分层构建(COPY pom.xml → RUN mvn dependency:go-offline → COPY src),提升 CI 构建速度
- 测试专用镜像打 tag 如 user-service:test-202608,避免 latest 覆盖引发意外











