wsl集成docker desktop环境下使用docker-compose一键部署mysql,nacos,redis,mq详细教程(服务器同理)


📚 微服务组件单机环境搭建教程(WSL+Docker Compose)


上篇我们已经搭建了wsl集成docker desktop环境,实际上是可以把wsl当作服务器来操作的,今天就教大家使用上篇搭建的环境集成docker-compose搭建一套简单的微服务单机教程,过一阵子时间充足再出一期企业级微服务分布式架构搭建。(有自己服务器的同学连接服务器操作是一样的步骤)

🌟 前置准备
  1. 确保已按上篇教程完成 WSL 与 Docker Desktop 集成
  2. 安装 FinalShell 客户端(官网下载

🔌 第一部分:SSH 连接 WSL 环境

1.1 进入 WSL 终端
# Windows 终端操作
win+R → 输入 cmd → 回车
wsl -d Ubuntu  # 若未启动则用 wsl.exe -d Ubuntu
ip a | grep eth0  # 查看 IPv4 地址(示例:172.27.123.45)
1.2 配置 SSH 服务
sudo apt update
sudo apt install openssh-server -y
sudo systemctl start ssh
sudo systemctl enable ssh
sudo systemctl status ssh  # 确认状态为 running
1.3 FinalShell 连接配置
  • 连接类型:SSH
  • 主机地址:172.27.123.45(替换为刚查到的 IPv4 地址)
  • 用户名:你的 WSL 用户名
  • 认证方式:密码(或密钥)

🛠 第二部分:项目结构搭建

2.1 创建目录结构
cd /home/tomcat
mkdir -p docker-compose-project/{
   
   mysql,nacos,redis,rocketmq/conf}
2.2 编写 Docker Compose 文件
cd docker-compose-project
vi docker-compose.yml
📄 docker-compose.yml 完整配置(点击展开)
services:
  # MySQL 服务
  mysql:
    image: mysql:8.4
    container_name: mysql
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: nacos_config
    volumes:
      - ./mysql/data:/var/lib/mysql
      - ./mysql/init.sql:/docker-entrypoint-initdb.d/init.sql
    networks:
      - app_network
    healthcheck:
      test: 
        - "CMD-SHELL"
        - "mysqladmin ping -uroot -proot && mysql -uroot -proot -e 'USE nacos_config; SELECT 1 FROM config_info LIMIT 1;'"
      interval: 3s
      timeout: 5s
      retries: 20

  # Nacos 服务
  nacos:
    image: nacos/nacos-server:latest
    container_name: nacos
    ports:
      - "8848:8848"
    environment:
      MODE: standalone
      SPRING_DATASOURCE_PLATFORM: mysql
      MYSQL_SERVICE_HOST: mysql
      MYSQL_SERVICE_PORT: 3306
      MYSQL_SERVICE_DB_NAME: nacos_config
      MYSQL_SERVICE_USER: root
      MYSQL_SERVICE_PASSWORD: root
      # 新增数据库连接参数
      MYSQL_SERVICE_DB_PARAM: "characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=true"
    # 强制指定时区(必须)
      TZ: Asia/Shanghai
    depends_on:
      mysql:
        condition: service_healthy
    # 添加健康检查(关键)
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8848/nacos/health"]
      interval: 10s
      timeout: 5s
      retries: 20
    command:
      - /bin/sh
      - -c
      - |
        # 增加循环检测逻辑
        while ! nc -z mysql 3306; do
          echo "等待 MySQL 服务就绪..."
          sleep 2
        done
        
        # 增加数据库连通性测试
        while ! mysql -hmysql -P3306 -uroot -proot -e "USE nacos_config; SELECT 1;"; do
          echo "等待数据库初始化完成..."
          sleep 5
        done

        echo "----------- 启动 Nacos -----------"
        bash /home/nacos/startup.sh -m standalone
    networks:
      - app_network

  # Redis 单机
  redis:
    image: redis:latest
    container_name: redis-server
    ports:
      - "6379:6379"
    volumes:
      - ./redis/data:/data
    command: redis-server --appendonly yes
    networks:
      - app_network

  # RocketMQ 消息队列
  rocketmq-namesrv:
    image: apache/rocketmq:5.1.4
    container_name: rocketmq-namesrv
    ports:
      - "9876:9876"
    command: sh mqnamesrv -n 0.0.0.0:9876
    networks:
      - app_network

  rocketmq-broker:
    image: apache/rocketmq:5.1.4
    container_name: rocketmq-broker
    ports:
      - "10909:10909"
      - "10911:10911"
    environment:
      NAMESRV_ADDR: rocketmq-namesrv:9876
    command:  # 统一使用列表格式
      - sh
      - -c
      - "/home/rocketmq/rocketmq-5.1.4/bin/mqbroker -n rocketmq-namesrv:9876 -c /home/rocketmq/conf/broker.conf"
    volumes:
      - ./rocketmq/data:/home/rocketmq/store
      - ./rocketmq/conf/broker.conf:/home/rocketmq/conf/broker.conf
    depends_on:
      - rocketmq-namesrv
    networks:
      - app_network

  # RocketMQ Dashboard 服务
  rocketmq-dashboard:
    image: apacherocketmq/rocketmq-dashboard:latest
    container_name: rocketmq-dashboard
    ports:
      - "9886:8080"
    environment:
      NAMESRV_ADDR: rocketmq-namesrv:9876
    depends_on:
      - rocketmq-namesrv
      - rocketmq-broker
    networks:
      - app_network

networks:
  app_network:
    driver: bridge

📦 第三部分:初始化配置

3.1 创建 MySQL 初始化脚本
cd mysql
vi init.sql  # 粘贴下方 SQL 内容(或从 Nacos GitHub 获取最新版本)
-- Nacos 官方完整 SQL 链接:
-- https://github.com/alibaba/nacos/blob/master/distribution/conf/mysql-schema.sql

CREATE DATABASE IF NOT EXISTS nacos_config;
USE nacos_config;
-- 在此处粘贴 Nacos 的 SQL 初始化脚本(来自 /*
/******************************************/
/*   表名称 = config_info                  */
/******************************************/
CREATE TABLE `config_info` (
                               `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
                               `data_id` varchar(255) NOT NULL COMMENT 'data_id',
                               `group_id` varchar(128) DEFAULT NULL COMMENT 'group_id',
                               `content` longtext NOT NULL COMMENT 'content',
                               `md5` varchar(32) DEFAULT NULL COMMENT 'md5',
                               `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
                               `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
                               `src_user` text CO
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值