基于 Docker Compose 的微服务本地开发环境一键部署实践

58 阅读2分钟

在微服务开发中,多服务依赖(数据库、缓存、消息队列等)的环境搭建往往繁琐且易出错。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:

关键技巧

  1. 利用depends_on控制服务启动顺序,避免依赖未就绪导致的启动失败;
  2. 通过数据卷(volumes)持久化数据,防止容器重启后数据丢失;
  3. 暴露本地端口映射,支持用本地工具直接连接容器内服务(如 Navicat 连 MySQL);
  4. 结合.env文件管理环境变量,区分开发 / 测试配置,避免硬编码敏感信息。

该方案已在团队落地,新成员入职后仅需执行docker-compose up -d,即可快速搭建完整开发环境,大幅降低环境配置成本。