在生产环境中将Rabbitmq与docker结合使用

时间:2019-07-29 22:31:20

标签: docker docker-compose rabbitmq

我目前有一个在Docker容器中运行的小型服务器,该服务器使用RabbitMQ,它由docker-compose使用DockerHub image运行。

它运行良好,但是我担心它可能没有针对生产进行正确配置(生产是一台简单的服务器,没有集群或任何花哨的东西)。特别是,我担心RabbitMQ生产清单中所述的disk space limit

我不确定如何通过docker-compose配置这些内容,因为该映像定义的env变量似乎非常有限。

我的docker-compose文件:

version: '3.4'
services:
  rabbitmq:
    image: rabbitmq:3-management-alpine
    ports:
      - "5672:5672"
      - "15672:15672"
    volumes:
      - rabbitmq:/var/lib/rabbitmq
    restart: always
    environment:
      - RABBITMQ_DEFAULT_USER=user
      - RABBITMQ_DEFAULT_PASS=secretpassword

  my-server:
   # server config here

volumes:
  rabbitmq:

networks:
  server-network:
    driver: bridge

1 个答案:

答案 0 :(得分:2)

disk_free_limit是在/etc/rabbitmq/rabbitmq.conf中设置的,似乎这里没有可用的环境。

因此,您只需要使用自己的docker bind mount volume覆盖rabbitmq.conf即可。

对于您的情况,如果您输入Rabbitmq容器,则可以看到:

shubuntu1@shubuntu1:~$ docker exec  some-rabbit cat /etc/rabbitmq/rabbitmq.conf
loopback_users.guest = false
listeners.tcp.default = 5672

因此,您只需要添加disk_free_limit.absolute = 1GB本地rabbitmq.conf并将其安装到容器即可覆盖默认的配置,完整示例如下:

rabbitmq.conf:

loopback_users.guest = false
listeners.tcp.default = 5672
disk_free_limit.absolute = 1GB

docker-compose.yaml:

version: '3.4'
services:
  rabbitmq:
    image: rabbitmq:3-management-alpine
    ports:
      - "5672:5672"
      - "15672:15672"
    volumes:
      - rabbitmq:/var/lib/rabbitmq
      - ./rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf

volumes:
  rabbitmq:

networks:
  server-network:
    driver: bridge

检查是否立即生效:

$ docker-compose up -d
$ docker-compose logs rabbitmq | grep "Disk free limit"
rabbitmq_1  | 2019-07-30 04:51:40.609 [info] <0.241.0> Disk free limit set to 1000MB

您会看到disk free limit已设置为1GB。