2026/4/6 5:57:46
网站建设
项目流程
重庆镇海seo整站优化价格,公众号流量投放,长春网站建设seo,东山县建设局网站视频看了几百小时还迷糊#xff1f;关注我#xff0c;几分钟让你秒懂#xff01;#x1f9e9; 一、为什么用 Docker 启动这些中间件#xff1f;在开发 Spring Boot 项目时#xff0c;你是不是经常要#xff1a;手动下载 MySQL 安装包#xff0c;配置 root 密码、字符集…视频看了几百小时还迷糊关注我几分钟让你秒懂 一、为什么用 Docker 启动这些中间件在开发 Spring Boot 项目时你是不是经常要手动下载 MySQL 安装包配置 root 密码、字符集花半小时装 Redis结果启动失败想本地测试 RabbitMQ但官网安装复杂到劝退配置 Nginx 反向代理改错一个符号就 502Docker 让这一切变得像“点外卖”一样简单只需一行命令就能启动一个预配置好的服务容器无需安装、不污染系统、随时销毁重建。本文将手把手教你 ✅ 用 Docker 分别启动RabbitMQ、MySQL、Redis、Nginx✅ 配置合理的参数密码、端口、持久化✅ 与 Spring Boot 项目联调✅ 避开新手常见坑️ 二、准备工作确保你已安装 Docker参考上一篇文章并打开终端Linux/macOS或 PowerShellWindows。验证docker --version 三、1. 启动 MySQL带持久化 UTF8✅ 正确姿势推荐docker run -d \ --name mysql-db \ -e MYSQL_ROOT_PASSWORD123456 \ -e MYSQL_DATABASEmyapp_db \ -v mysql_data:/var/lib/mysql \ -p 3306:3306 \ --restartalways \ mysql:8.0 参数说明-d后台运行--name mysql-db容器命名方便管理-e MYSQL_ROOT_PASSWORD123456设置 root 密码必须指定-e MYSQL_DATABASEmyapp_db自动创建数据库-v mysql_data:/var/lib/mysql数据持久化即使容器删了数据还在-p 3306:3306映射端口宿主机:容器--restartalways开机自启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_PASSWORD123456 -p 3306:3306 mysql:8.0 四、2. 启动 Redis带密码 持久化✅ 正确姿势docker run -d \ --name redis-cache \ -v redis_data:/data \ -p 6379:6379 \ --restartalways \ 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_USERadmin \ -e RABBITMQ_DEFAULT_PASSadmin123 \ -v rabbitmq_data:/var/lib/rabbitmq \ -p 5672:5672 \ -p 15672:15672 \ --restartalways \ rabbitmq:3.12-management 参数说明rabbitmq:3.12-management必须带 management 标签否则没有 Web 管理界面-p 5672:5672AMQP 协议端口Spring Boot 连这个-p 15672:15672Web 管理界面端口-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.confserver { 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-hosthost.docker.internal:host-gateway步骤 3启动 Nginxdocker run -d \ --name nginx-proxy \ -v ~/nginx/conf.d:/etc/nginx/conf.d \ -p 80:80 \ --restartalways \ 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?useSSLfalseserverTimezoneUTC 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⚠️ 九、注意事项避坑指南端口冲突如果 3306/6379 等端口被占用修改宿主机端口如-p 3307:3306Linux 下 Nginx 代理宿主机问题在 Linux 上host.docker.internal默认不可用启动 Nginx 时加--add-hosthost.docker.internal:host-gateway生产环境不要用默认密码本文密码仅为演示请务必修改为强密码volume 比 bind mount 更安全优先用-v volume_name:/path而不是-v /host/path:/container/path避免权限问题。镜像版本固定建议指定完整 tag如mysql:8.0.36避免latest自动升级导致兼容问题。✅ 十、总结四行命令搞定四大中间件# MySQL docker run -d --name mysql-db -e MYSQL_ROOT_PASSWORD123456 -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_USERadmin -e RABBITMQ_DEFAULT_PASSadmin123 -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 分钟搭建完整开发环境视频看了几百小时还迷糊关注我几分钟让你秒懂