Аргумент команды docker-composr.yml
Есть ли способ заставить эту команду выполняться в контейнере в качестве аргумента docker-compose.yml?
команда:
"rabbitmqctl set_policy ha "example-queue" '{"ha-mode":"all", "ha-sync-mode":"automatic"}' --priority 1 --apply-to queues"
докер-compose.yml:
version: '2.3'
services:
rabbit1:
image: rabbitmq:v378
hostname: rabbit1
environment:
- RABBITMQ_ERLANG_COOKIE=abcdefg
volumes:
- ./enabled_plugins:/etc/rabbitmq/enabled_plugins
- ./rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf
- ./definitions.json:/etc/rabbitmq/definitions.json
ports:
- "5672:5672"
- "15672:15672"
- "25672:25672"
- "4369:4369"
Спасибо
3 ответа
Вы уже используете файл определений, так почему бы вам не заполнить его информацией о политике?
"policies": [
{
"vhost": "/",
"name": "ha",
"pattern": "example-queue",
"apply-to": "queues",
"definition": {
"ha-mode": "all",
"ha-sync-mode": "automatic"
},
"priority": 1
}
]
Это самый простой способ, и он совсем не связан с Docker.
Docker compose имеет поддержку команды в качестве параметра:
Я предполагаю, что вы хотите запустить команду:
rabbitmqctl set_policy ha "example-queue" '{"ha-mode":"all", "ha-sync-mode":"automatic"}' --priority 1 --apply-to queues
всякий раз, когда вы запускаете контейнер. Затем просто добавьте следующее в ваш docker-compose
entrypoint:
- rabbitmqctl
- set_policy
- ha
- "example-queue"
- '{"ha-mode":"all", "ha-sync-mode":"automatic"}'
- --priority
- 1
- --apply-to
- queues
Я почти уверен, что это должно сработать, но если нет, оставьте комментарий, мы обсудим и выясним ошибки.
Кроме того, ваша команда немного неясна для меня, поэтому я не знаю, какая опция относится к каким значениям. Возможно, что --priority=1
должно быть написано вместо того, чтобы писать их в две строки.