WSL2+Docker Compose实战:从零搭建微服务开发环境(MySQL+Nacos+Redis+RocketMQ)

WSL2+Docker Compose实战:从零搭建微服务开发环境(MySQL+Nacos+Redis+RocketMQ) 1. 为什么选择WSL2Docker Compose搭建微服务环境在本地开发微服务项目时最头疼的就是各种中间件的安装配置。传统方式需要在物理机上逐个安装MySQL、Redis这些服务不仅步骤繁琐还容易污染本地环境。我刚开始做微服务开发时就经常遇到端口冲突、版本不兼容的问题重装系统都成了家常便饭。后来发现WSL2Docker Compose这个黄金组合开发效率直接翻倍。WSL2提供了接近原生Linux的性能而Docker Compose用声明式配置管理所有服务。最近给团队新人培训时用这套方案10分钟就搭好了包含四大组件的环境。具体优势体现在环境隔离性所有服务运行在容器中不会影响宿主机一键启停docker-compose up -d就能启动全部服务配置即代码docker-compose.yml文件可纳入版本控制资源可控能限制每个容器的CPU/内存占用实测下来这套方案比传统虚拟机方案节省至少50%的内存占用。我的笔记本16G内存同时跑MySQLNacosRedisRocketMQ毫无压力开发体验非常流畅。2. 环境准备与基础配置2.1 安装WSL2和Docker Desktop首先确保你的Windows版本是2004以上我用的是Windows 11 22H2。安装过程其实微软官方文档已经写得很清楚但有几个坑需要特别注意# 管理员身份打开PowerShell wsl --install这个命令会自动安装WSL2和Ubuntu发行版。安装完成后务必执行wsl --set-default-version 2接着去Docker官网下载Docker Desktop安装时一定要勾选Use WSL2 based engine选项。安装完成后在设置里确认WSL集成已启用注意如果遇到WSL2网络问题可以尝试在PowerShell执行netsh winsock reset2.2 配置Linux开发环境我习惯用Ubuntu作为WSL发行版先做些基础配置# 更新软件源 sudo apt update sudo apt upgrade -y # 安装常用工具 sudo apt install -y curl git vim net-tools # 配置SSH服务可选 sudo apt install openssh-server sudo service ssh start建议把项目文件都放在WSL文件系统中比如/home/yourname/projects而不是Windows的挂载目录/mnt/c/。实测性能差异能达到5倍以上特别是处理大量小文件时。3. Docker Compose编排四大组件3.1 编写docker-compose.yml创建项目目录结构mkdir -p ~/microservice/{mysql,nacos,redis,rocketmq/conf}然后是最关键的docker-compose.yml配置我优化了几个关键点version: 3.8 services: mysql: image: mysql:8.0 container_name: mysql ports: [3306:3306] environment: MYSQL_ROOT_PASSWORD: 123456 MYSQL_DATABASE: nacos_config volumes: - ./mysql/data:/var/lib/mysql - ./mysql/init.sql:/docker-entrypoint-initdb.d/init.sql healthcheck: test: [CMD, mysqladmin, ping, -uroot, -p123456] interval: 3s timeout: 5s retries: 10 nacos: image: nacos/nacos-server:v2.2.0 depends_on: mysql: condition: service_healthy ports: [8848:8848] environment: MODE: standalone SPRING_DATASOURCE_PLATFORM: mysql MYSQL_SERVICE_HOST: mysql MYSQL_SERVICE_DB_NAME: nacos_config MYSQL_SERVICE_USER: root MYSQL_SERVICE_PASSWORD: 123456踩坑提醒Nacos 2.x版本必须用MySQL 8.05.7会报字符集错误。我在这个坑里浪费了两小时。3.2 配置RocketMQ集群RocketMQ需要配置NameServer和Brokerrocketmq-namesrv: image: apache/rocketmq:5.1.4 ports: [9876:9876] command: sh mqnamesrv rocketmq-broker: image: apache/rocketmq:5.1.4 ports: [10909:10909, 10911:10911] environment: NAMESRV_ADDR: rocketmq-namesrv:9876 volumes: - ./rocketmq/conf/broker.conf:/home/rocketmq/rocketmq-5.1.4/conf/broker.conf depends_on: [rocketmq-namesrv]对应的broker.conf配置brokerClusterNameDefaultCluster brokerNamebroker-a brokerId0 namesrvAddrrocketmq-namesrv:9876 storePathRootDir/home/rocketmq/store autoCreateTopicEnabletrue4. 服务初始化与验证4.1 初始化Nacos数据库创建mysql/init.sql文件内容从Nacos官方GitHub获取CREATE DATABASE IF NOT EXISTS nacos_config; USE nacos_config; -- 以下粘贴Nacos的官方SQL脚本 -- https://github.com/alibaba/nacos/blob/master/distribution/conf/mysql-schema.sql启动服务后会看到MySQL容器自动执行了这些SQLdocker-compose up -d docker logs mysql | grep Executing4.2 验证各组件状态MySQL用客户端连接localhost:3306检查nacos_config数据库Nacos访问http://localhost:8848/nacos 默认账号nacos/nacosRedis执行redis-cli -p 6379 ping应返回PONGRocketMQ Dashboard访问http://localhost:8080 查看集群状态如果Nacos启动时报数据库连接错误可以尝试docker restart nacos这种情况通常是MySQL还没完全初始化完成健康检查机制偶尔会有延迟。5. 开发环境优化技巧5.1 性能调优配置在docker-compose.yml中添加资源限制services: mysql: deploy: resources: limits: cpus: 1 memory: 1G对于Redis可以启用持久化redis: image: redis:6 command: redis-server --save 60 1 --loglevel warning5.2 常用运维命令查看服务日志docker-compose logs -f nacos进入容器调试docker exec -it mysql mysql -uroot -p123456备份MySQL数据docker exec mysql sh -c exec mysqldump --all-databases -uroot -p123456 backup.sql5.3 IDE集成配置在VS Code中安装WSL和Docker插件后可以直接在WSL环境中开发。推荐配置{ docker.host: wsl, docker.explorerRefreshInterval: 3000 }对于IntelliJ IDEA需要在WSL终端启动IDE/mnt/c/Program\ Files/JetBrains/IntelliJ\ IDEA/bin/idea.sh