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
相关推荐
ICollection1 小时前
4060笔记本用Docker部署ComfyUI绘图
docker·comfyui
豆沙沙包?5 小时前
C++~~~stack容器、queue容器、list容器(p45-P56)
c++·windows·list
浪兎兎7 小时前
【Kubernetes 实战】(二)部署 Ruoyi-Cloud —— 部署服务
云原生·容器·kubernetes
淼澄研学8 小时前
Proliferate开源框架技术解析与Docker部署实操
docker·容器·开源
浪兎兎9 小时前
Docker 容器技术笔记
笔记·docker·容器
Zhu75810 小时前
在Docker环境离线部署最新版Harbor
运维·docker·容器
天蓝不会忘记0212 小时前
pod的控制器
容器·kubernetes
戒了,最后一次12 小时前
DeepSeek Harness 源码安装教程(Windows 篇)
windows·腾讯云·deepseek·harness
DevOps老兵12 小时前
Kubernetes生产运维02:只会get pods还不够,kubectl排障工具箱怎么组合使用
运维·容器·kubernetes·kubectl·devops·故障排查·sre
陈聪.12 小时前
Kubernetes 中 Pod 的全面知识
云原生·容器·kubernetes