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
相关推荐
桌面运维家16 小时前
vDisk VOI架构IO瓶颈怎么办?Windows优化实战
windows·架构
2501_9399090517 小时前
k8s基础与安装部署
云原生·容器·kubernetes
主公不搬砖18 小时前
Nacos 2.5.2 国产信创 kingbase适配
java·docker·nacos·信创·kingbase·国产适配
谷隐凡二18 小时前
Kubernetes Route控制器简单介绍
java·容器·kubernetes
非凡ghost18 小时前
MPC-QT视频播放器(基于Qt框架播放器)
开发语言·windows·qt·音视频·软件需求
ysy164806723918 小时前
Docker安装(Windows版)
windows·docker·容器
2501_9404140819 小时前
搞了一次平台工程,我把本地的 Docker Desktop 彻底卸了
运维·docker·容器
工具罗某人20 小时前
docker快速部署kafka
java·nginx·docker
珂玥c21 小时前
windows系统nfs挂载
运维·windows·ssh·remmina·cygwin