小编rea*_*fle的帖子

我应该如何构建dockerized RabbitMQ?

我正在尝试使用Docker将我们的单片PHP Symfony应用程序迁移到更具可扩展性的解决方案.应用程序和RabbitMQ之间有一些通信,我docker-compose用来启动所有容器,在这种情况下是app和RabbitMQ服务器.

围绕该主题进行了大量讨论,一个容器应该只生成一个进程,而Docker最佳实践在这一点上有些模糊:

虽然这个口头禅具有良好的意图,但每个容器应该只有一个操作系统进程并不一定正确.除了现在可以使用init进程生成容器这一事实之外,某些程序可能会自行生成其他进程.

为每个RabbitMQ使用者创建一个单独的Docker容器是否有意义?不让rabbitmq服务器知道用于处理队列的语言/工具,感觉"正确"和"干净".我提出了(相关部分docker-compose.yml):

  app :
    # my php-fpm app container

  rabbitmq_server:
    container_name: sf.rabbitmq_server
    build: .docker/rabbitmq
    ports:
        - "15672:15672"
        - "5672:5672"
    networks:
      - app_network

  rabbitmq_consumer:
    container_name: sf.rabbit_consumer
    extends: app
    depends_on:
      - rabbitmq_server
    working_dir: /app
    command: "php bin/console rabbitmq:consumer test"
    networks:
      - app_network
Run Code Online (Sandbox Code Playgroud)

我可以在rabbitmq_consumer容器中使用nohup或在后台运行它们的其他方式运行多个使用者.

我想我的问题是:

我可以以某种方式自动化"添加新的消费者",这样每次从代码中添加新的消费者时,我都不必编辑Docker的"构建脚本"(以及其他的,如ansible)吗?

将RabbitMQ服务器与消费者分开是否有意义,或者我应该将Rabbit服务器与在后台运行的消费者一起使用?

或者它们应该放在app容器的背景中?

amqp rabbitmq symfony docker docker-compose

5
推荐指数
1
解决办法
997
查看次数

标签 统计

amqp ×1

docker ×1

docker-compose ×1

rabbitmq ×1

symfony ×1