用Docker快速搭建微服务本地仿真环境的核心是:环境一键就绪、依赖自动拉起、服务一键联调;通过执行脚本安装Docker及Compose并配置国内镜像源,用docker-compose.yml统一编排MySQL、Redis、Nacos等中间件,各服务用多阶段Dockerfile构建,最后通过compose网络实现容器间通信与联调。

用 Docker 快速搭一个能跑通、可调试、接近真实部署的微服务本地仿真环境,核心就三点:环境一键就绪、依赖自动拉起、服务一键联调。不用配 JDK、不装 MySQL、不记启动顺序,整套下来 10 分钟内搞定。
一步到位装好 Docker 环境
无论你是 Windows(开 WSL2)、macOS 还是 Linux,直接运行这行命令:
bash <(wget -qO- https://xuanyuan.cloud/docker.sh)它会自动安装 Docker Engine + Docker Compose,并配置好国内镜像加速(轩辕镜像源),避开国外拉取慢、OpenJDK 镜像弃用等常见坑。
装完验证:
- docker --version → 显示类似 Docker version 27.0.3
- docker compose --version → 显示类似 Docker Compose version v2.27.0
Windows/macOS 用户顺手装个 Docker Desktop,图形界面看容器状态更直观。
用 docker-compose.yml 一键拉起全套依赖
微服务离不开中间件。别一个个手动 run,写一个 docker-compose.yml 把 MySQL、Redis、Nacos 全部声明好,比如:
version: '3.8'
services:
mysql:
image: mysql:5.7
ports: ["3306:3306"]
environment: {MYSQL_ROOT_PASSWORD: root}
volumes: ["./mysql-data:/var/lib/mysql"]
<p>redis:
image: redis:7-alpine
ports: ["6379:6379"]</p><p>nacos:
image: nacos/nacos-server:v2.3.2
ports: ["8848:8848"]
environment:</p><ul><li>MODE=standalone</li><li>JVM_XMS=512m</li><li>JVM_XMX=512m保存后执行:docker-compose up -d,三秒内全部服务就绪,日志用 docker-compose logs -f 实时查看。
每个微服务写一个轻量 Dockerfile
Spring Boot 项目打包成 jar 后,Dockerfile 推荐用多阶段构建,干净又小:
FROM eclipse-temurin:17-jre-alpine ENV TZ=Asia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime COPY your-service.jar app.jar USER nobody EXPOSE 8080 ENTRYPOINT ["java", "-jar", "app.jar"]
关键点:
- 基础镜像选 eclipse-temurin:17-jre-alpine,比 openjdk 更稳定、体积更小
- 用 USER nobody 避免 root 权限风险
- 加 TZ=Asia/Shanghai 防止日志时间错乱
本地联调靠 compose 统一编排
把业务服务也加进 docker-compose.yml,和中间件打通网络:
user-service:
build: ./user-service
ports: ["8080:8080"]
environment:
- SPRING_PROFILES_ACTIVE=docker
- NACOS_SERVER_ADDR=nacos:8848
- SPRING_REDIS_HOST=redis
depends_on: [nacos, redis]
<p>order-service:
build: ./order-service
ports: ["8081:8081"]
environment:</p><ul><li>SPRING_PROFILES_ACTIVE=docker</li><li>NACOS_SERVER_ADDR=nacos:8848</li><li>SPRING_DATASOURCE_URL=jdbc:mysql://mysql:3306/order_db所有服务共享默认 bridge 网络,容器名(如 nacos、redis)就是 DNS 名,代码里直接写,不用改 host。
启动整套环境:docker-compose up -d;停止:docker-compose down;重置数据只需删掉 volumes 目录再 up 一次。


















