news 2026/4/16 15:04:32

手把手教你用 Docker 一键启动 RabbitMQ、MySQL、Redis、Nginx(含 Spring Boot 联调实战)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
手把手教你用 Docker 一键启动 RabbitMQ、MySQL、Redis、Nginx(含 Spring Boot 联调实战)

视频看了几百小时还迷糊?关注我,几分钟让你秒懂!


🧩 一、为什么用 Docker 启动这些中间件?

在开发 Spring Boot 项目时,你是不是经常要:

  • 手动下载 MySQL 安装包,配置 root 密码、字符集?
  • 花半小时装 Redis,结果启动失败?
  • 想本地测试 RabbitMQ,但官网安装复杂到劝退?
  • 配置 Nginx 反向代理,改错一个符号就 502?

Docker 让这一切变得像“点外卖”一样简单!

只需一行命令,就能启动一个预配置好的服务容器,无需安装、不污染系统、随时销毁重建

本文将手把手教你: ✅ 用 Docker 分别启动RabbitMQ、MySQL、Redis、Nginx
✅ 配置合理的参数(密码、端口、持久化)
✅ 与 Spring Boot 项目联调
✅ 避开新手常见坑!


🛠️ 二、准备工作

确保你已安装 Docker(参考上一篇文章),并打开终端(Linux/macOS)或 PowerShell(Windows)。

验证:

docker --version

🐘 三、1. 启动 MySQL(带持久化 + UTF8)

✅ 正确姿势(推荐)

docker run -d \ --name mysql-db \ -e MYSQL_ROOT_PASSWORD=123456 \ -e MYSQL_DATABASE=myapp_db \ -v mysql_data:/var/lib/mysql \ -p 3306:3306 \ --restart=always \ mysql:8.0

🔍 参数说明:

  • -d:后台运行
  • --name mysql-db:容器命名,方便管理
  • -e MYSQL_ROOT_PASSWORD=123456:设置 root 密码(必须指定!
  • -e MYSQL_DATABASE=myapp_db:自动创建数据库
  • -v mysql_data:/var/lib/mysql数据持久化(即使容器删了,数据还在)
  • -p 3306:3306:映射端口(宿主机:容器)
  • --restart=always:开机自启
  • mysql:8.0:使用官方 8.0 镜像

✅ 验证:

docker logs mysql-db # 查看启动日志 docker exec -it mysql-db mysql -uroot -p123456 # 进入 MySQL

❌ 反例:不设密码 or 不持久化

# 错误!没密码会启动失败(MySQL 8+ 强制要求) docker run -d -p 3306:3306 mysql:8.0 # 错误!容器一删,数据全丢 docker run -d -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 mysql:8.0

🟥 四、2. 启动 Redis(带密码 + 持久化)

✅ 正确姿势

docker run -d \ --name redis-cache \ -v redis_data:/data \ -p 6379:6379 \ --restart=always \ redis:7.0 \ redis-server --appendonly yes --requirepass "mypassword123"

🔍 参数说明:

  • --appendonly yes:开启 AOF 持久化
  • --requirepass "mypassword123":设置访问密码
  • -v redis_data:/data:持久化数据到 volume

✅ 验证:

docker exec -it redis-cache redis-cli -a mypassword123 127.0.0.1:6379> ping PONG

❌ 反例:裸奔无密码

# 危险!任何知道你 IP 的人都能清空你的 Redis! docker run -d -p 6379:6379 redis:7.0

🐇 五、3. 启动 RabbitMQ(带管理界面)

✅ 正确姿势

docker run -d \ --name rabbitmq-server \ -e RABBITMQ_DEFAULT_USER=admin \ -e RABBITMQ_DEFAULT_PASS=admin123 \ -v rabbitmq_data:/var/lib/rabbitmq \ -p 5672:5672 \ -p 15672:15672 \ --restart=always \ rabbitmq:3.12-management

🔍 参数说明:

  • rabbitmq:3.12-management必须带 management 标签,否则没有 Web 管理界面
  • -p 5672:5672:AMQP 协议端口(Spring Boot 连这个)
  • -p 15672:15672:Web 管理界面端口
  • -e RABBITMQ_DEFAULT_USER/PASS:设置默认账号密码

✅ 验证:

  • 浏览器访问:http://localhost:15672
  • 用户名/密码:admin / admin123

❌ 反例:用错镜像

# 错误!这个镜像没有管理界面,无法可视化调试 docker run -d -p 5672:5672 rabbitmq:3.12

🌐 六、4. 启动 Nginx(反向代理 Spring Boot)

✅ 场景:用 Nginx 代理本地 8080 的 Spring Boot 应用

步骤 1:创建配置目录
mkdir -p ~/nginx/conf.d
步骤 2:创建~/nginx/conf.d/default.conf
server { listen 80; server_name localhost; location /api/ { proxy_pass http://host.docker.internal:8080/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } location / { root /usr/share/nginx/html; index index.html; } }

💡host.docker.internal是 Docker 提供的特殊 DNS,指向宿主机(Windows/Mac 支持,Linux 需加--add-host=host.docker.internal:host-gateway

步骤 3:启动 Nginx
docker run -d \ --name nginx-proxy \ -v ~/nginx/conf.d:/etc/nginx/conf.d \ -p 80:80 \ --restart=always \ nginx:1.25

✅ 验证:

假设你的 Spring Boot 有接口GET /hello,现在可通过:

http://localhost/api/hello

访问(Nginx 会转发到http://宿主机:8080/hello

❌ 反例:直接用默认 Nginx 不改配置

  • 无法代理后端
  • 静态资源也访问不了
  • 白跑!

🔄 七、Spring Boot 联调配置示例

在你的application.yml中配置连接信息:

spring: datasource: url: jdbc:mysql://localhost:3306/myapp_db?useSSL=false&serverTimezone=UTC username: root password: 123456 redis: host: localhost port: 6379 password: mypassword123 lettuce: pool: max-active: 8 rabbitmq: host: localhost port: 5672 username: admin password: admin123

💡 注意:所有 host 都是localhost,因为我们把容器端口映射到了宿主机。


🧹 八、一键管理:查看 & 清理

# 查看所有运行中的容器 docker ps # 停止并删除所有示例容器 docker stop mysql-db redis-cache rabbitmq-server nginx-proxy docker rm mysql-db redis-cache rabbitmq-server nginx-proxy # 删除持久化数据(谨慎!) docker volume rm mysql_data redis_data rabbitmq_data

⚠️ 九、注意事项(避坑指南)

  1. 端口冲突
    如果 3306/6379 等端口被占用,修改宿主机端口,如-p 3307:3306

  2. Linux 下 Nginx 代理宿主机问题
    在 Linux 上,host.docker.internal默认不可用,启动 Nginx 时加:

    --add-host=host.docker.internal:host-gateway
  3. 生产环境不要用默认密码
    本文密码仅为演示,请务必修改为强密码!

  4. volume 比 bind mount 更安全
    优先用-v volume_name:/path而不是-v /host/path:/container/path,避免权限问题。

  5. 镜像版本固定
    建议指定完整 tag,如mysql:8.0.36,避免latest自动升级导致兼容问题。


✅ 十、总结:四行命令搞定四大中间件

# MySQL docker run -d --name mysql-db -e MYSQL_ROOT_PASSWORD=123456 -v mysql_data:/var/lib/mysql -p 3306:3306 mysql:8.0 # Redis docker run -d --name redis-cache -v redis_data:/data -p 6379:6379 redis:7.0 redis-server --appendonly yes --requirepass "mypassword123" # RabbitMQ docker run -d --name rabbitmq-server -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin123 -v rabbitmq_data:/var/lib/rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3.12-management # Nginx docker run -d --name nginx-proxy -v ~/nginx/conf.d:/etc/nginx/conf.d -p 80:80 nginx:1.25

复制粘贴,5 分钟搭建完整开发环境!


视频看了几百小时还迷糊?关注我,几分钟让你秒懂!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 23:59:12

ClickHouse列式存储:VibeThinker写出高效聚合查询

VibeThinker-1.5B:小模型如何实现高强度逻辑推理 在当前大模型动辄数百亿、数千亿参数的背景下,一个仅 15 亿参数的语言模型竟能在数学与编程任务中超越许多“庞然大物”,听起来似乎有些不可思议。但微博开源的 VibeThinker-1.5B-APP 正是这样…

作者头像 李华
网站建设 2026/4/16 12:32:42

友达 G101STN01.0 工业便携屏:10.1 英寸轻量 TN 显示驱动技术解析

前言If you have any questions, feel free to communicate at any timeRecord each screen with code【V】【Guste8868】在工业小型手持终端、便携数据采集设备场景中,10.1 英寸 WSVGA 模组需满足 **-10~60℃宽温 **、250 cd/m 亮度、TN 常白显示的超轻量需求&…

作者头像 李华
网站建设 2026/4/16 15:36:12

机载MIMO雷达节点资源与路径优化管控【附代码】

✅ 博主简介:擅长数据搜集与处理、建模仿真、程序设计、仿真代码、论文写作与指导,毕业论文、期刊论文经验交流。✅成品或者定制,扫描文章底部微信二维码。(1) 机载分布式MIMO雷达协同探测模型与性能指标体系构建机载分布式多输入多输出雷达系…

作者头像 李华
网站建设 2026/4/16 14:03:50

基于微信小程序的智能在线预约挂号系统【源码文末联系】

基于微信小程序的智能在线预约挂号系统 三个角色(管理员,用户,医生) 效果如下: 登录页面预约挂号页面管理员首页面退费申请管理页面用户首页面科室信息页面医生详情页面公告信息详情页面研究背景 随着移动互联网的深度…

作者头像 李华
网站建设 2026/4/16 3:06:21

Julia科学计算:VibeThinker编写微分方程求解器

Julia科学计算:VibeThinker编写微分方程求解器 在科研与工程建模中,一个常见的场景是:研究人员刚写下“系统衰减速率与当前状态成正比”,转头就要面对如何将其转化为可运行的数值模拟代码。这个过程看似简单,实则涉及数…

作者头像 李华
网站建设 2026/4/16 16:12:22

Jenkins Pipeline:VibeThinker编写Declarative语法脚本

Jenkins Pipeline 与 VibeThinker-1.5B:构建轻量级推理服务的自动化实践 在 AI 模型日益“军备竞赛”的今天,千亿参数、万亿 token 训练似乎成了主流叙事。然而,在真实工程场景中,我们更常面对的是资源有限、响应要快、成本可控的…

作者头像 李华