Аргумент команды 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 имеет поддержку команды в качестве параметра:

https://docs.docker.com/compose/compose-file/

Я предполагаю, что вы хотите запустить команду:

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 должно быть написано вместо того, чтобы писать их в две строки.

Другие вопросы по тегам