windows安装docker实例

bash 复制代码
version: '3.8'

services:
  rabbitmq:
    image: rabbitmq:3.8.16-management-alpine
    container_name: rabbitmq
    restart: unless-stopped
    ports:
      - "5672:5672"
      - "15672:15672"
      - "1883:1883"
    environment:
      - RABBITMQ_DEFAULT_USER=admin
      - RABBITMQ_DEFAULT_PASS=admin123
      - RABBITMQ_DEFAULT_VHOST=/
    volumes:
      - D:/Java/docker/rabbitmq/rabbitmq_data:/var/lib/rabbitmq
      #- D:/Java/docker/rabbitmq/plugins:/plugins  # 新增插件目录挂载

    networks:
      - app-network

  cassandra:
    image: cassandra:4.0.11
    container_name: cassandra
    restart: unless-stopped
    ports:
      - "9042:9042"
      - "9160:9160"
      - "7199:7199"
    environment:
      - CASSANDRA_CLUSTER_NAME=MyCluster
      - CASSANDRA_DC=DC1
      - CASSANDRA_ENDPOINT_SNITCH=GossipingPropertyFileSnitch
      - CASSANDRA_NUM_TOKENS=256
      - MAX_HEAP_SIZE=2G
      - HEAP_NEWSIZE=200M
    volumes:
      - D:/Java/docker/cassandra/cassandra_data:/var/lib/cassandra
      # 暂时注释掉配置挂载
      # - ./cassandra/cql:/cql
      # - ./cassandra/cassandra.yaml:/etc/cassandra/cassandra.yaml
    networks:
      - app-network

  # Redis 6.2.7+
  redis:
    image: redis:6.2.7-alpine
    container_name: redis
    restart: unless-stopped
    ports:
      - "6379:6379"
    command: redis-server --requirepass your_redis_password --appendonly yes
    volumes:
      - D:/Java/docker/redis/redis_data:/data
      - D:/Java/docker/redis/redis.conf:/usr/local/etc/redis/redis.conf
    environment:
      - REDIS_PASSWORD=your_redis_password
    networks:
      - app-network
    healthcheck:
      test: ["CMD", "redis-cli", "--raw", "incr", "ping"]
      interval: 10s
      timeout: 5s
      retries: 3

  # MySQL 8.0
  mysql:
    image: mysql:8.0
    container_name: mysql
    restart: unless-stopped
    ports:
      - "3307:3307"
    environment:
      MYSQL_ROOT_PASSWORD: root_password
      MYSQL_DATABASE: mydb
      MYSQL_USER: user
      MYSQL_PASSWORD: user_password
    volumes:
      - D:/Java/docker/mysql/mysql_data:/var/lib/mysql
      - D:/Java/docker/mysql/init:/docker-entrypoint-initdb.d
      - D:/Java/docker/mysql/my.cnf:/etc/mysql/conf.d/my.cnf
    command: 
      --default-authentication-plugin=mysql_native_password
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_unicode_ci
    networks:
      - app-network
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
      interval: 10s
      timeout: 5s
      retries: 5

networks:
  app-network:
    driver: bridge
    # 不指定子网,让 Docker 自动分配

volumes:
  rabbitmq_data:
  cassandra_data:
  redis_data:
  mysql_data:

docker-compose.yml内容如上

镜像源配置如下

bash 复制代码
{
  "builder": {
    "gc": {
      "defaultKeepStorage": "20GB",
      "enabled": true
    }
  },
  "experimental": false,
  "registry-mirrors": [
    "https://docker.m.daocloud.io",
    "https://docker.1ms.run",
    "https://ccr.ccs.tencentyun.com",
    "https://hub.xdark.top",
    "https://hub.fast360.xyz",
    "https://docker-0.unsee.tech",
    "https://docker.xuanyuan.me",
    "https://docker.tbedu.top",
    "https://docker.hlmirror.com",
    "https://doublezonline.cloud",
    "https://docker.melikeme.cn",
    "https://image.cloudlayer.icu",
    "https://dislabaiot.xyz",
    "https://freeno.xyz",
    "https://docker.kejilion.pro"
  ]
}

给rabbitmq安装延时插件

首先下载插件:

你需要下载与 rabbitmq:3.8.16-management-alpine 版本完全匹配的插件。

  1. 官方 GitHub 发布地址:rabbitmq-delayed-message-exchange releases

  2. 找到与 3.8.x 兼容的版本,通常是 v3.8.17。

  3. 下载文件:rabbitmq_delayed_message_exchange-3.8.17.8f537ac.ez

    如果你无法访问GitHub,可以尝试使用这个国内备用链接,或将此链接复制到下载工具(如迅雷)中下载:https://objectstorage.ap-osaka-1.oraclecloud.com/n/axdwrj2s8m5s/b/rabbitmq-plugins/o/rabbitmq_delayed_message_exchange-3.8.17.8f537ac.ez

📁 步骤二:放置插件文件

将下载的 .ez 文件,放到你的 Docker 卷挂载目录:

  • 放置到 :D:/Java/docker/rabbitmq/plugins/

  • 确保容器内路径 :/plugins/rabbitmq_delayed_message_exchange-3.8.17.8f537ac.ez

复制插件文件到容器内

在 CMD 或 PowerShell 中,使用 docker cp 命令将文件复制到容器内的 /plugins/ 目录。

bash

复制代码
# 在 CMD/PowerShell 中执行(注意Windows路径)
docker cp D:\Java\docker\rabbitmq\plugins\rabbitmq_delayed_message_exchange-3.8.17.8f537ac.ez rabbitmq:/plugins/

执行成功不会有提示,如果报错(如文件路径不对),请检查路径。

第三步:进入容器启用插件并重启

复制完成后,需要进入容器启用插件,然后重启容器使插件生效。

bash

复制代码
# 1. 进入容器(会打开一个新的命令行)
docker exec -it rabbitmq /bin/sh

# 2. 在容器内部启用插件(你会看到成功提示)
rabbitmq-plugins enable rabbitmq_delayed_message_exchange

# 3. 退出容器
exit

# 4. 重启容器以完全加载插件
docker restart rabbitmq

第四步:验证插件是否安装成功

容器重启后(约等10秒),运行验证命令。

bash

复制代码
docker exec rabbitmq rabbitmq-plugins list | grep delayed

如果看到 [E*] rabbitmq_delayed_message_exchange 3.8.17 (带有 E* 标志),就表示插件已成功启用。

启用mqtt插件,让mqttx工具可以连接

复制代码
# 在容器中列出已启用插件,查找mqtt
docker exec rabbitmq rabbitmq-plugins list | grep mqtt
  • 如果没有任何输出 ,说明插件未启用。

  • 如果看到 [ ] rabbitmq_mqtt ,表示插件存在但未启用。

  • 如果看到 [E*] rabbitmq_mqtt ,表示插件已启用

如果第一步确认插件未启用,执行以下命令:

bash

复制代码
# 启用MQTT插件
docker exec rabbitmq rabbitmq-plugins enable rabbitmq_mqtt

# 重启容器使插件生效
docker restart rabbitmq

# 再次确认插件状态
docker exec rabbitmq rabbitmq-plugins list | grep mqtt
相关推荐
Sakura_j_h_6 小时前
Python 在定时任务里输出 emoji,UnicodeEncodeError 从哪来
开发语言·字符编码·windows·python·定时任务
隔窗听雨眠9 小时前
PostgreSQL单表从Windows迁移到Linux:差异剖析、方案对比与全流程实战
linux·windows·postgresql
Helix25012 小时前
Ansible混合环境自动化:Windows与Linux统一配置管理实战
windows·自动化·ansible·playbook·配置管理·winrm·混合环境
Java开发追求者13 小时前
windows快速安装docker
windows·docker·安装·1024程序员节
骑着蜗牛撵大象32715 小时前
飞牛fnOS部署Damselfly:Compose编排、照片目录与7100固定访问
java·docker·rpc·dubbo·fnos·照片管理·damselfly
一掬净土16 小时前
kubelet 报错如下:docker does not support reopening container log files
docker·云原生·kubelet·logfiles
Helix25017 小时前
Windows ETW与KQL实战:终端性能诊断与遥测数据分析指南
windows·性能诊断·kql·etw·azure monitor·遥测数据·tracert
TTATTC18 小时前
为什么 Python 做 Agent 总在并发中崩溃?拆解 Blockcell 在 Rust 下的 Host-Cell 隔离与自愈状态机
docker·开源
陈葛杰18 小时前
Adobe Premiere Pro2025安装教程
windows·adobe·开源软件·1024程序员节
承渊政道19 小时前
iOS远程控制电脑用什么好?iPhoneiPad远程控制Windows电脑最佳方案2026横评
windows·ios·远程控制·1024程序员节·iphone ipad