在 Docker 镜像中保留 RabbitMQ 配置

Pet*_*ron 1 rabbitmq docker

在 Docker 镜像中配置 RabbitMQ 是一场噩梦。当使用Fig作为链接容器运行 RabbitMQ 时,我可以连接到 RabbitMQ 接口,并成功配置vhosts和允许我的 Celery 工作人员进行连接,没有任何问题。

但是,重新启动 Docker 会丢失配置设置。我怎样才能保留这些设置?

我尝试过的一些事情:

  • 配置完所有内容后,从导出写入/etc/rabbitmq/rabbit.configDocker 映像。RabbitMQ 会忽略它。
  • 在我的 Docker 文件中设置主机名ENV HOSTNAME localhost,但这似乎会干扰图 1 中链接 Docker 容器。

我究竟做错了什么?是否有一个规范的 Dockerfile 用于获取配置的 RabbitMQ docker 容器以用于 Docker 链接开发目的,最好使用 Fig?

lou*_*uan 6

正如在这里提到的:

该问题似乎是由于 Docker 的每个新容器的默认主机名都会发生变化,而 RabbitMQ 实际上将配置绑定到主机名。

所以关键是设置主机名

这是 docker-compose 的解决方案:

version: '3'
services:
  rabbitmq:
    image: rabbitmq:management
    hostname: qsearchmq    # specify your hostname here
    volumes:
      - rabbitmq:/var/lib/rabbitmq    # use a volume to store the data
volumes:
  rabbitmq:
    driver: local
Run Code Online (Sandbox Code Playgroud)