【问题标题】:RabbitMQ docker container persistence on WindowsWindows 上的 RabbitMQ docker 容器持久化
【发布时间】:2018-10-31 15:13:46
【问题描述】:

我创建了一个docker-compose.yml 文件,当尝试“up”它时,我的RabbitMQ docker 容器无法持久保存到我的主机卷。它抱怨只有所有者无法访问 erlang cookie 文件。

对此的任何帮助将不胜感激。

编辑

所以我添加了上面的卷绑定,当我执行docker-compose up 时,rabbitmq 似乎正在将文件放入该目录中。然后我添加 2 条消息,我可以通过 rabbitmq 控制台看到 2 条消息位于队列中......但是当我执行 docker-compose down 后跟 docker-compose up 时,期望 2 条消息仍然存在目录和文件已创建,但未创建,并且消息计数 = 0 :(.

【问题讨论】:

  • 尝试使用管理员帐号
  • 我对 docker 还很陌生 - 我将如何在 docker-compose 文件中执行此操作?还是我需要以管理员身份运行 docker-compose 命令?
  • 管理员命令
  • 我试过了,但不幸的是没有奏效:(。无论如何谢谢你。

标签: docker rabbitmq erlang docker-compose


【解决方案1】:

也许它正在尝试访问一些特权用户功能。

尝试在 yml 中将 privileged: true 部分添加到您的 docker-compose 服务中,然后再次执行 docker-compose up

如果它有效并且您更喜欢做一些特权,只需要 RabbitMQ 需要的,请将 privileged: true 替换为添加或删除特权的功能部分:

cap_add:
  - ALL
  - <WHAT_YOU_PREFER>

cap_drop:
  - NET_ADMIN
  - SYS_ADMIN
  - <WHAT_YOU_PREFER>

更多信息,请查看Compose file documentation

编辑:

为了在容器发生故障时提供数据持久性,请将卷部分添加到 docker-compose.yml 文件 volumes: /your_host_dir_with_data:/destination_in_docker

【讨论】:

  • 它仍然没有工作:(但谢谢你。我想要做的是让 RabbitMQ 在 docker 中运行,但在重新启动时,它需要在重新启动之前保留消息。松散的头发这……
  • 尝试将此消息放入bind volume。 Docker 卷是容器启动时从主机安装到 docker 的文件夹,因此可能具有数据持久性。尝试将 volumes: 部分添加到您的 docker-compose 文件中
  • 谢谢。我也试过了——看看我的编辑。你可能知道我做错了什么吗?非常感谢您对此提供的帮助。
  • 在挂载卷之前检查容器中是否不存在/var/lib/rabbitmq/mnesia。如果目录存在,则卷未正确安装。 1. 启动没有volume: 部分的docker。 2.docker exec -ti &lt;container_name&gt; bash 3.ls /var/lib/rabbitmq/mnesia如果存在,如果可以配置,使用另一个不存在的文件夹,例如/var/lib/rabbitmq/mnesia/yourfolder
  • @CraigM 我看到您将此标记为正确答案,但您也表示这不起作用:您的最终解决方案/修复是什么?
猜你喜欢
  • 1970-01-01
  • 2021-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-28
  • 1970-01-01
  • 2020-06-02
  • 2019-10-09
相关资源
最近更新 更多