Docker安装RabbitMQ
RabbitMQ 是一个开源的、广泛使用的消息中间件(Message Broker),基于 AMQP(Advanced Message Queuing Protocol) 协议实现,支持多种消息传递模式,适用于分布式系统、微服务架构和异步通信场景。
1.在docker-hup里查找RabbitMQ镜像
2.在docker里安装RabbitMQ
// 安装最新版本
docker pull RabbitMQ
// 安装指定版本
docker pull RabbitMQ:4.0.9
// 查看安装的镜像
docker images
3.创建RabbitMQ容器
(1)创建自定义网络
Docker自定义网络的核心优势:
- 容器间通信:自定义网络允许容器通过服务名直接通信,无需硬编码IP地址。
- 网络隔离:提高安全性,防止未授权访问。
- 灵活的网络策略:可以设置网络别名、防火墙规则等。
- 避免端口冲突:多个服务可以使用相同的端口号,通过不同网络隔离。
// 创建自定义网络
docker network create fusion_network
// 查看自定义网络
docker network ls
//查找使用该网络的容器
docker network inspect mysql_network | grep Containers
// 停止网络
docker stop fusion_network
// 删除网络
docker rm fusion_network
(2) 创建容器
docker run -it -d --name fusion_reabbitmq \
-p 4369:4369 -p 5671:5671 -p 5672:5672 \
--net fusion_network \
-e RABBITMQ_DEFAULT_USER=root \
-e RABBITMQ_DEFAULT_PASS=123456\
-e TZ=Asia/Shanghai \
rabbitmq:4.0.9
4.docker-compose.yml配置
services:
mysql:
image: mysql:8.0.42
container_name: fusion_mysql
networks:
- fusion_network
ports:
- "3303:3306"
volumes:
- /root/mysql/log:/var/log/mysql
- /root/mysql/data:/var/lib/mysql
- /root/mysql/conf:/etc/mysql/conf.d
environment:
MYSQL_ROOT_PASSWORD: 123456
restart: unless-stopped
redis:
image: redis:8.0.2
container_name: fusion_redis
ports:
- "6379:6379"
networks:
- fusion_network
volumes:
- /root/redis/conf:/usr/local/etc/redis
environment:
TZ: Asia/Shanghai
command: ["redis-server", "/usr/local/etc/redis/redis.conf"]
restart: unless-stopped
mongo:
image: mongo:8.0.10
container_name: fusion_mongo
ports:
- "27017:27017"
networks:
- fusion_network
volumes:
- /root/mongo:/etc/mongo
- /root/mongo/data/db:/data/db
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: 123456
TZ: Asia/Shanghai
command: ["mongod", "--config", "/etc/mongo/mongod.conf"]
restart: unless-stopped
rabbitmq:
image: rabbitmq:4.0.9
container_name: fusion_reabbitmq
ports:
- "4369:4369"
- "5671:5671"
- "5672:5672"
networks:
- fusion_network
environment:
RABBITMQ_DEFAULT_USER: root
RABBITMQ_DEFAULT_PASS: 123456
TZ: Asia/Shanghai
restart: unless-stopped
minio:
image: minio/minio:latest
container_name: fusion_minio
ports:
- "9000:9000"
- "9001:9001"
networks:
- fusion_network
environment:
MINIO_ACCESS_KEY: root
MINIO_SECRET_KEY: 123456
TZ: Asia/Shanghai
volumes:
- /home/minio/data:/data
- /home/minio/config:/root/.minio
command: ["server", "/data", "--console-address", ":9001", "--address", ":9000"]
restart: always
elasticsearch:
image: elasticsearch:8.0.1
container_name: fusion_elasticsearch
networks:
- fusion_network
ports:
- "9200:9200"
- "9300:9300"
privileged: true
volumes:
- /root/elasticsearch/data:/usr/share/elasticsearch/data
- /root/elasticsearch/plugins:/usr/share/elasticsearch/plugins
- /root/elasticsearch/config:/usr/share/elasticsearch/config
environment:
discovery.type: single-node
ES_JAVA_OPTS: "-Xms512m -Xmx512m"
restart: always
kibana:
image: kibana:8.0.1
container_name: fusion_kibana
networks:
- fusion_network
ports:
- "5601:5601"
privileged: true
volumes:
- /root/kibana/data:/usr/share/kibana/data
- /root/kibana/config:/usr/share/kibana/config
environment:
ELASTICSEARCH_HOSTS: http://elasticsearch:9200
restart: always