我正在尝试使用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运行,因为它现在似乎与docker-come.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": {}
}
]
}发布于 2021-12-22 16:17:58
命令docker rm -f (强制)移除容器。在那之后你不能再启动它了,因为它已经不存在了。
如果要从docker-compose文件中的服务docker-compose创建新容器,则需要在docker-compose.yml所在的目录中使用docker-compose命令:
docker-compose up -d rabbit_node_3
其中:
up告诉对接者-撰写从命名的服务创建容器,(rabbit_node_3)-d告诉对接者-撰写,你不想把你的终端附加到容器的stdout和stderr上,由这个命令启动。它只会在后台释放您的终端来执行其他任务,https://stackoverflow.com/questions/70451922
复制相似问题