docker-composr.yml命令参数

时间:2018-10-16 12:04:52

标签: docker rabbitmq docker-compose containers

是否有一种方法可以使该命令作为docker-compose.yml的参数在容器中运行?

命令:

"rabbitmqctl set_policy ha "example-queue" '{"ha-mode":"all", "ha-sync-mode":"automatic"}' --priority 1 --apply-to queues"

docker-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 个答案:

答案 0 :(得分:0)

Docker compose支持命令作为参数:

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

答案 1 :(得分:0)

我假设您要运行命令:

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而不是将它们写成两行。

答案 2 :(得分:0)

您已经在使用定义文件,那么为什么不使用策略信息来完成它呢?

__slots__

这是最简单的方法,它根本不涉及Docker。