在Docker镜像中持久化RabbitMQ配置

时间:2014-02-28 21:50:18

标签: rabbitmq docker

在Docker镜像中配置RabbitMQ是一场噩梦。当我将RabbitMQ作为带Fig的链接容器运行时,我可以连接到RabbitMQ接口,并成功配置vhosts和我的Celery工作者的权限,以便连接没有问题。

但是,重新启动Docker会丢失配置设置。我该如何坚持这些设置?

我尝试过的一些事情:

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

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

2 个答案:

答案 0 :(得分:0)

这是一个老帖子,但值得回答。很明显,您的容器退出后不会提交。即使你是,问题也可能是你正在启动一个vanilla容器,而不是之前提交的版本。查找" docker commit"和#34; docker start",与#34; docker run"形成鲜明对比。

另请注意,Docker在将容器连接到主机时会创建临时端口。当您需要与容器内的套接字进行通信时,客户端需要与之通信的配置可能会有所不同 - 例如,每次重新启动提交的RabbitMQ容器时,客户端需要使用的容器的端口号都会发生变化。容器端口到临时主机端口的双向映射。这意味着它主要是主机必须补偿。除非您使用-p选项,或者在Dockerfile中正确配置EXPOSE,否则如果您使用的是自定义的。你正在使用一个,对吧?

答案 1 :(得分:0)

ben提到了here

  

问题似乎是由于使用Docker在每个新容器上更改了默认主机名,而RabbitMQ实际上将配置绑定到了主机名。

所以关键是设置主机名

这是为docker-compose用户提供的解决方案:

SelectedValue