我正在嘗試使用 docker 創建一個 rabbitmq 集群,基于下面這兩個鏈接中提供的詳細資訊,我已經啟動了它,但不確定在我再次洗掉它后如何啟動影像/容器。

我可以使用 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定義.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": {}
}
]
}
uj5u.com熱心網友回復:
該命令docker rm -f(強制)洗掉一個容器。在那之后你不能再啟動它,因為它不再存在。
如果你想創建新的服務容器rabbit_node_3在你的docker-compose檔案,你需要使用docker-compose從目錄在您的內命令docker-compose.yml所在:
docker-compose up -d rabbit_node_3
在哪里:
up告訴 docker-compose 從命名服務 (rabbit_node_3)創建容器-d告訴搬運工,撰寫你不希望你的終端連接到stdout并stderr開始使用此命令的容器。它只會在后臺運行并釋放您的終端以執行其他任務
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/390039.html
