Docker Compose编排微服务:这6个服务,一键启动 !

奥黛丽·逐爱者
2026-11-03 / 0 评论 / 1 阅读 / 正在检测是否收录...

📅 2026-10-22 💼 云原生/DevOps ⏱️ 阅读约10分钟

💥 微服务项目,本地开发环境搭建是个大坑。Spring Boot、MySQL、Redis、RabbitMQ、Nginx、Eureka……6个服务,手动一个个启动,光配置就要半小时。

💥 更崩溃的是:新人入职,环境搭一天;换台电脑,环境重新搭;团队协作,每个人环境不一样,出问题互相甩锅。

💥 今天教大家用Docker Compose一键编排6个微服务,一个YAML文件搞定所有配置,一条命令启动全部服务。从此告别"在我电脑上能跑啊"的尴尬!

🐳 Docker Compose是什么?30秒搞懂

Docker Compose是Docker官方提供的容器编排工具,通过一个YAML文件定义多个容器的配置,一条命令启动所有服务。

核心概念:

• Service(服务):一个容器实例,比如MySQL、Redis、你的Spring Boot应用• Container(容器):服务运行后的实例,互相隔离• Network(网络):容器之间的通信通道,同一个网络下的容器可以互相访问• Volume(数据卷):持久化存储,容器重启后数据不丢失

💡 安装方式

Docker Desktop(Windows/Mac)自带Docker Compose,不用单独安装。Linux服务器:sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

📋 完整配置:6个微服务一键编排

下面是完整的docker-compose.yml配置文件,包含Spring Boot + MySQL + Redis + RabbitMQ + Nginx + Eureka 6个服务:

version: '3.8'services:# 1. MySQL数据库mysql:image: mysql:8.0container_name: my-mysqlenvironment:MYSQL_ROOT_PASSWORD: root123MYSQL_DATABASE: mydbports:      -"3306:3306"volumes:      - mysql-data:/var/lib/mysqlnetworks:      - mynet# 2. Redis缓存redis:image: redis:7-alpinecontainer_name: my-redisports:      -"6379:6379"command: redis-server --requirepass redis123networks:      - mynet# 3. RabbitMQ消息队列rabbitmq:image: rabbitmq:3-managementcontainer_name: my-rabbitmqenvironment:RABBITMQ_DEFAULT_USER: adminRABBITMQ_DEFAULT_PASS: admin123ports:      -"5672:5672"# AMQP端口      -"15672:15672"# 管理界面端口networks:      - mynet# 4. Eureka服务注册中心eureka:build: ./eureka-servercontainer_name: my-eurekaports:      -"8761:8761"networks:      - mynet# 5. Spring Boot业务服务app:build: ./my-appcontainer_name: my-appdepends_on:      - mysql      - redis      - rabbitmq      - eurekaenvironment:SPRING_DATASOURCE_URL: jdbc:mysql://mysql:3306/mydbSPRING_REDIS_HOST: redisSPRING_RABBITMQ_HOST: rabbitmqEUREKA_CLIENT_SERVICEURL_DEFAULTZONE: http://eureka:8761/eureka/ports:      -"8080:8080"networks:      - mynet# 6. Nginx反向代理nginx:image: nginx:alpinecontainer_name: my-nginxports:      -"80:80"volumes:      - ./nginx/nginx.conf:/etc/nginx/nginx.confdepends_on:      - appnetworks:      - mynetvolumes:mysql-data:networks:mynet:driver: bridge

🚀 一键启动:3条命令搞定

配置写好后,启动所有服务只需要3条命令:

# 1. 构建镜像(首次或代码更新后执行)$ docker-composebuild# 2. 启动所有服务(后台运行)$ docker-composeup -d# 3. 查看运行状态$ docker-composepsNAME           STATUS         PORTSmy-mysql       Up 2 minutes   0.0.0.0:3306->3306/tcpmy-redis       Up 2 minutes   0.0.0.0:6379->6379/tcpmy-rabbitmq    Up 2 minutes   0.0.0.0:5672->5672/tcp, 0.0.0.0:15672->15672/tcpmy-eureka      Up 2 minutes   0.0.0.0:8761->8761/tcpmy-app         Up 2 minutes   0.0.0.0:8080->8080/tcpmy-nginx       Up 2 minutes   0.0.0.0:80->80/tcp

全部启动后,访问 http://localhost:8761 查看Eureka控制台,访问 http://localhost:15672 查看RabbitMQ管理界面,访问 http://localhost 通过Nginx访问业务接口。

🔧 常用命令速查

命令
功能说明
使用场景
docker-compose up -d
启动所有服务(后台运行)
日常启动开发环境
docker-compose down
停止并删除所有容器
关闭开发环境
docker-compose stop
停止所有容器(不删除)
临时停止,下次快速启动
docker-compose restart
重启所有容器
配置变更后重启
docker-compose ps
查看所有容器状态
检查服务是否正常运行
docker-compose logs -f
实时查看日志
排查问题
docker-compose exec 服务名 命令
进入容器执行命令
调试、查看容器内部
docker-compose build
重新构建镜像
代码更新后重建镜像

⚙️ 关键配置解析

docker-compose.yml中有几个关键配置需要重点理解:

1. depends_on:服务依赖顺序app服务依赖mysql、redis、rabbitmq、eureka,Docker Compose会先启动这4个服务,再启动app。但注意:depends_on只保证容器启动顺序,不保证服务就绪。如果app启动时mysql还没完全就绪,需要在app里加重试逻辑。

2. networks:容器网络所有服务都在mynet网络下,容器之间可以用服务名互相访问。比如app连接MySQL的地址是 jdbc:mysql://mysql:3306,不是localhost,也不是IP地址。

3. volumes:数据持久化MySQL数据存储在mysql-data卷中,即使容器删除重建,数据也不会丢失。Nginx配置文件通过volumes挂载,修改配置后重启容器即可生效,不用重新构建镜像。

4. environment:环境变量Spring Boot的配置通过环境变量注入,不用改代码、不用改配置文件。不同环境(开发/测试/生产)只需要修改docker-compose.yml中的环境变量即可。

🎯 实战技巧:新人入职5分钟搭好环境

把docker-compose.yml和相关的Dockerfile、配置文件统一放在项目根目录下,新人入职只需要:

💡 操作步骤

1. 安装Docker Desktop(Windows/Mac)或Docker Engine(Linux)2. git clone 项目代码3. 进入项目根目录,执行 docker-compose up -d4. 等待所有服务启动完成,访问 http://localhost:8761 确认Eureka正常5. 开始开发!

整个过程不超过5分钟,不用装MySQL、不用装Redis、不用配置环境变量,所有依赖都在容器里。换电脑?重装系统?只要有Docker,环境随时恢复。

🎯 使用建议与避坑指南

1️⃣ 开发环境用Compose,生产环境用K8s

Docker Compose适合单机部署,开发、测试、演示环境用起来很方便。生产环境需要高可用、自动扩缩容、服务发现,建议用Kubernetes(K8s)。

2️⃣ 注意容器资源限制

默认情况下,Docker容器可以使用宿主机的所有资源。建议在docker-compose.yml中给每个服务配置CPU和内存限制,避免某个服务把机器资源吃光,影响其他服务。

3️⃣ 日志管理不能忽视

容器日志默认会无限增长,建议配置日志轮转(log-opt max-size=10m, max-file=3),定期清理旧日志,避免磁盘被撑爆。

💬 互动话题

你平时开发环境是怎么搭建的?用Docker Compose还是手动安装?有什么踩坑经验?

👉 欢迎在评论区分享你的看法!


觉得有用?别忘了「三连」支持!

❤️ 点赞——给辛苦码字的作者加鸡腿!⭐ 收藏——搭环境的时候用得着!🔄 转发——让团队小伙伴都学会!


关注我,获取更多Java后端干货

专注Java后端技术 · 分享实战干货 · 每周更新点击关注不迷路

🏷️ 相关标签:#Docker #DockerCompose #微服务 #容器编排 #云原生

0

评论 (0)

取消