在微服务开发中,多服务依赖(数据库、缓存、消息队列等)的环境搭建往往繁琐且易出错。Docker Compose 通过声明式配置,可实现 “一键启动所有依赖服务”,大幅提升开发效率,本文分享其核心配置与落地技巧。
核心价值
- 环境一致性:避免 “本地能跑、线上报错” 的依赖差异问题;
- 轻量化部署:无需单独安装 MySQL、Redis 等服务,容器化隔离更安全;
- 快速启停:支持单服务重启与整体环境一键销毁,迭代效率翻倍。
实战配置示例
yaml
version: '3.8'
services:
# 微服务应用
app-service:
build: ./app
ports:
- "8080:8080"
depends_on:
- mysql
- redis
- rabbitmq
environment:
- SPRING_DATASOURCE_URL=jdbc:mysql://mysql:3306/dev_db
- SPRING_REDIS_HOST=redis
# 依赖服务:MySQL
mysql:
image: mysql:8.0
ports:
- "3306:3306"
environment:
- MYSQL_ROOT_PASSWORD=123456
- MYSQL_DATABASE=dev_db
volumes:
- mysql-data:/var/lib/mysql
# 依赖服务:Redis
redis:
image: redis:7.0
ports:
- "6379:6379"
volumes:
- redis-data:/data
# 依赖服务:RabbitMQ
rabbitmq:
image: rabbitmq:3-management
ports:
- "5672:5672"
- "15672:15672" # 管理界面
volumes:
mysql-data:
redis-data:
关键技巧
- 利用
depends_on控制服务启动顺序,避免依赖未就绪导致的启动失败; - 通过数据卷(volumes)持久化数据,防止容器重启后数据丢失;
- 暴露本地端口映射,支持用本地工具直接连接容器内服务(如 Navicat 连 MySQL);
- 结合
.env文件管理环境变量,区分开发 / 测试配置,避免硬编码敏感信息。
该方案已在团队落地,新成员入职后仅需执行docker-compose up -d,即可快速搭建完整开发环境,大幅降低环境配置成本。