【发布时间】:2021-12-22 16:05:05
【问题描述】:
我正在尝试使用 docker 创建一个 rabbitmq 集群,根据下面这两个链接中提供的详细信息,我已经启动了它,但不确定在我再次删除它之后如何启动图像/容器。
https://www.youtube.com/watch?v=w2kGd2VRJWE
https://www.youtube.com/watch?v=FzqjtU2x6YA
他通过这个命令停止节点的第二个视频(请原谅这个名字,还不知道如何使它更简洁)
docker rm -f rabbitcluster_rabbit_node_3_1
所以我的问题是,如何启动我刚刚删除的第三个?目前我已经尝试过这个命令,它是图像名称,但 get 似乎是单独启动的。
docker run -d rabbitcluster_rabbit_node_3
我可以使用 docker-compose.yml 中的任何内容,还是我必须使用 docker run,因为它现在似乎与 docker-compose.yml 文件断开了连接!?
这是我写的docker-compose.yml
version: "3.9"
services:
rabbit_node_1:
build: .
hostname: rabbit-1
environment:
- RABBITMQ_ERLANG_COOKIE = "ABCDYJLFQNTHDRZEPLOZ"
- RABBIT_NODENAME = rabbit1
- RABBITMQ_CONFIG_FILE = /etc/rabbitmq/rabbitmq.conf
- RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS = -rabbit log [{console,[{level,debug}]}]
ports:
- 8081:15672
- 5672:5672
- 4369:4369
rabbit_node_2:
build: .
hostname: rabbit-2
# Don't start any of these until rabbit1 is up
depends_on:
- rabbit1
environment:
- RABBITMQ_ERLANG_COOKIE = "ABCDYJLFQNTHDRZEPLOZ"
- RABBIT_NODENAME = rabbit2
- RABBITMQ_CONFIG_FILE = /etc/rabbitmq/rabbitmq.conf
- RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS = -rabbit log [{console,[{level,debug}]}]
ports:
- 8082:15672
rabbit_node_3:
build: .
hostname: rabbit-3
# Don't start any of these until rabbit1 is up
depends_on:
- rabbit1
environment:
- RABBITMQ_ERLANG_COOKIE = "ABCDYJLFQNTHDRZEPLOZ"
- RABBIT_NODENAME = rabbit3
- RABBITMQ_CONFIG_FILE = /etc/rabbitmq/rabbitmq.conf
- RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS = -rabbit log [{console,[{level,debug}]}]
ports:
- 8083:15672
# docker network create rabbitmq-cluster
networks:
default:
name: rabbitmq-cluster
这是 Dockerfile
FROM rabbitmq:3.9-management
COPY rabbitmq.conf /etc/rabbitmq/rabbitmq.conf
COPY definitions.json /etc/rabbitmq/definitions.json
COPY .erlang.cookie /var/lib/rabbitmq/.erlang.cookie
RUN chmod 700 /var/lib/rabbitmq/.erlang.cookie
这是 rabbitmq.conf
loopback_users.guest = false
listeners.tcp.default = 5672
management.listener.port = 15672
management.listener.ssl = false
management.load_definitions = /etc/rabbitmq/definitions.json
cluster_name = cluster1
cluster_formation.peer_discovery_backend = rabbit_peer_discovery_classic_config
cluster_formation.classic_config.nodes.1 = rabbit@rabbit-1
cluster_formation.classic_config.nodes.2 = rabbit@rabbit-2
cluster_formation.classic_config.nodes.3 = rabbit@rabbit-3
最后这是 rabbitmq definitions.json 文件
{
"users": [
{
"name": "andrew",
"password": "test",
"tags": "administrator"
}
],
"vhosts": [
{
"name": "/"
}
],
"permissions": [
{
"user": "andrew",
"vhost": "/",
"configure": ".*",
"write": ".*",
"read": ".*"
}
],
"parameters": [],
"policies": [],
"exchanges": [
{
"name": "test.exchange",
"vhost": "/",
"type": "direct",
"durable": true,
"auto_delete": false,
"internal": false,
"arguments": {}
}
],
"queues": [
{
"name": "test.queue",
"vhost": "/",
"durable": true,
"auto_delete": false,
"arguments": {}
}
],
"bindings": [
{
"source": "test.exchange",
"vhost": "/",
"destination": "test.queue",
"destination_type": "queue",
"routing_key": "",
"arguments": {}
}
]
}
【问题讨论】: