Docker RabbitMQ持久性

时间:2016-12-26 11:24:30

标签: docker rabbitmq containers dockerfile

删除没有卷的容器

后,在docker los数据中的RabbitMQ

我的Dockerfile:

FROM rabbitmq:3-management
ENV RABBITMQ_HIPE_COMPILE 1
ENV RABBITMQ_ERLANG_COOKIE "123456"
ENV RABBITMQ_DEFAULT_VHOST "123456"

我的运行脚本:

IMAGE_NAME="service-rabbitmq"
TAG="${REGISTRY_ADDRESS}/${IMAGE_NAME}:${VERSION}"

echo $TAG

docker rm -f $IMAGE_NAME

  docker run \
    -itd \
    -v "rabbitmq_log:/var/log/rabbitmq" \
    -v "rabbitmq_data:/var/lib/rabbitmq" \
    --name "service-rabbitmq" \
    --dns=8.8.8.8 \
    -p 8080:15672 \
    $TAG

删除容器后,所有数据都丢失了。

如何在docker中使用持久数据配置rabbitmq?

2 个答案:

答案 0 :(得分:10)

  

Rabbitmq使用主机名作为mnesia中文件夹名称的一部分   目录。也许在您的泊坞窗运行中添加--hostname some-rabbit

我遇到了同样的问题,我找到了答案here

答案 1 :(得分:6)

TL; DR

对此没有做太多的研究,但是似乎最简单的方法是更改​​Pedro上面提到的hostname

更多信息:

使用RABBITMQ_NODENAME

如果您想通过Docker编辑RABBITMQ_NODENAME变量,由于Docker主机名是作为随机散列生成的,因此您似乎还需要添加hostname

如果将RABBITMQ_NODENAME变量更改为类似my-rabbit的静态变量,RabbitMQ将抛出类似"nxdomain not found"的错误,因为它正在寻找类似
my-rabbit@<docker_hostname_hash>的变量。 如果您知道Docker主机名并且可以像这样自动将其拉入您的RABBITMQ_NODENAME值,那么my-rabbit@<docker_hostname_hash>我相信它会起作用。


更新

我之前说过

  

如果您知道Docker主机名,并且可以像这样自动将其拉入您的RABBITMQ_NODENAME值,那么my-rabbit@<docker_hostname_hash>我相信它会起作用。

这将无法按照精确描述的方式工作,因为默认docker主机名是在启动时随机生成的(如果未明确分配)。实际上,要确保您使用EXACT SAME <docker_hostname_hash>作为原始运行时的障碍,以便正确获取数据目录。动态/稳健地实施将是一个痛苦。如下所述,使用显式主机名是最简单的。


另一种选择是将hostname设置为您选择的值,例如app-messaging并且还将RABBITMQ_NODENAME var设置为某种值像rabbit@app-messaging。这样,您可以控制将在数据目录中使用的完整节点名称。

使用主机名

推荐

这就是说,除非您有理由更改主机名,否则仅更改主机名是确保每次都将数据装入同一位置和从同一位置装入数据的最简单方法。 / p>

我正在使用以下Docker Compose文件在启动之间成功保留我的设置。

version: '3'
services:
  rabbitmq:
    hostname: 'mabbit'
    image: "${ARTIFACTORY}/rabbitmq:3-management"
    ports:
      - "15672:15672"
      - "5672:5672"
    volumes:
      - "./data:/var/lib/rabbitmq/mnesia/"
    networks:
      - rabbitmq

networks:
  rabbitmq:
    driver: bridge

这将在我的撰写文件旁边创建一个data目录,并像这样持久化RabbitMQ设置:

./data/
  rabbit@mabbit/
  rabbit@mabbit-plugins-expand/
  rabbit@mabbit.pid
  rabbit@mabbit-feature_flags