刚开始,关于RabbitMQ集群的搭建,我找到了这篇文章:Docker 安装 RabbitMQ 集群

从而找到了第三方的RabbitMQ集群容器 rabbitmq-server

但是这个容器只有3.6.10版本,连3.6.14版本都没有,看样子已经很久没更新推送了。

RabbitMQ刚发布3.7.0版本,但还没来得及在Docker Hub推送3.7.0版本的容器。

于是萌生自己构建一个基于3.7.0版本的Docker容器的想法。

Forkbijukunjummen/docker-rabbitmq-cluster的库到自己的Github库.

Clone自己的VAllens/docker-rabbitmq-cluster库到本地。

看了一边原作者写的代码后,直接用Notepad++批量替换3.6.103.7.0,然后把原作者信息改成自己的。

再把RabbitMQ安装包的下载地址更新为RabbitMQ 3.7.0

以下是我更改代码后的差异截图







第一次构建(国内本地开发机):###

在自己本地的Docker环境上执行build-images.sh开始构建,各种报错。

错误之一:找不到https://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-9.noarch.rpm

在代码里找到https://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-9.noarch.rpm改成https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-11.noarch.rpm

第二次构建(国内本地开发机):###

又是各种报错。

错误之二:提示/var/xxxxxx/cache/xxxxxxxxx.rpm找不到。

搜索后增加缓存清除和重建命令后解决

RUN yum clean all && yum clean metadata && yum clean dbcache && yum makecache && yum -y update

RUN rpm --rebuilddb

第三次构建(国内本地开发机):###

还是各种报错。

错误之三http://xxxxxxxxx/centos/7/updates/x86_64/repodata/dd6db8b290ec639a13dceebf2754de1d31392e18acad98e32e4ef5ad3a7e41da-primary.sqlite.bz2: [Errno 14] HTTP Error 404 。

这种问题,刚开始我以为和错误之二差不多,但折腾来折腾去总是搞不定。

感觉无解,因为搜索不到任何解决方案,后来用香港的服务器就没有出现过这样的错误了。

搜索到一个同样错误的CentOS 7 で「XXXXXX-primary.sqlite.bz2: [Errno 14] HTTP Error 404 - Not Found」エラー発生,他却通过缓存清除和更新解决问题了

第四次构建(香港服务器):###

错误之四rabbitmq-server依赖erlang 19.3以上版本,而erlang环境是R16B03版本。

RabbitMQ查文档发现,RabbitMQ 3.6.14以下版本使用erlang R16B03版本,从RabbitMQ 3.6.15开始使用erlang 19.3以上版本。

于是将https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-11.noarch.rpm替换成https://github.com/rabbitmq/erlang-rpm/releases/download/v20.1.7/erlang-20.1.7-1.el7.centos.x86_64.rpm

第五次构建(香港服务器):###

错误之五The command '/bin/sh -c /usr/sbin/rabbitmq-plugins enable --offline rabbitmq_mqtt rabbitmq_stomp rabbitmq_management rabbitmq_management_agent rabbitmq_management_visualiser rabbitmq_federation rabbitmq_federation_management sockjs<<<'y'' returned a non-zero code: 70

我看RabbitMQ官方的Docker构建只是简单的一句rabbitmq-plugins enable --offline rabbitmq_management,于是改成和官方一样,这是开启Web界面管理插件的意思。

构建成功了

访问登录一看,不对劲,明明构建了三个集群,为何只显示两个?



看了一下cluster/docker-compose.yml,发现rabbit3节点的ports少了一个web端口配置,加上之后重新构建



总算是完全构建成功了

然后推送到Docker Hub.

$ docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: vallen
Password:
Login Succeeded
08:56:31 0 root@HKWEBXX01:/opt/rabbitmq/docker-rabbitmq-cluster/cluster (master)
$ docker push vallen/rabbitmq-base:3.7.0
The push refers to a repository [docker.io/vallen/rabbitmq-base]
49c4dd0218bf: Pushed
e05c6ae20e34: Pushed
cb3d60bc2852: Pushed
0bcda199b0b4: Pushed
6b5da83a0b8c: Pushed
45e10453c709: Pushed
a0d45dbc6f9c: Pushed
877a51e31640: Pushed
129b697f70e9: Mounted from library/centos
3.7.0: digest: sha256:01c94e60909d92fc09feb0485c8098bf7908122e0b8af511515e95f76340dbd6 size: 2212
09:37:04 0 root@HKWEBXX01:/opt/rabbitmq/docker-rabbitmq-cluster/cluster (master)
$ docker push vallen/rabbitmq-server:3.7.0
The push refers to a repository [docker.io/vallen/rabbitmq-server]
b3d821cdc3c3: Pushed
c233e5b35237: Pushed
1c6005cb5509: Pushed
616c29009bde: Pushed
a32721abfea1: Pushed
1548cde54861: Pushed
7ef7d7cbddf6: Pushed
49c4dd0218bf: Mounted from vallen/rabbitmq-base
e05c6ae20e34: Mounted from vallen/rabbitmq-base
cb3d60bc2852: Mounted from vallen/rabbitmq-base
0bcda199b0b4: Mounted from vallen/rabbitmq-base
6b5da83a0b8c: Mounted from vallen/rabbitmq-base
45e10453c709: Mounted from vallen/rabbitmq-base
a0d45dbc6f9c: Mounted from vallen/rabbitmq-base
877a51e31640: Mounted from vallen/rabbitmq-base
129b697f70e9: Mounted from vallen/rabbitmq-base
3.7.0: digest: sha256:d67e1f67c0880f91ce42fa3f429a51c3886f2dff89c14b9c45815c692d6cd73d size: 3661

参考:https://www.cnblogs.com/itxdm/p/5876597.html

http://blog.csdn.net/u011058700/article/details/78708767

Docker 构建 RabbitMQ 集群的更多相关文章

  1. Docker搭建RabbitMQ集群

    Docker搭建RabbitMQ集群 Docker安装 见官网 RabbitMQ镜像下载及配置 见此博文 集群搭建 首先,我们需要启动运行RabbitMQ docker run -d --hostna ...

  2. docker部署rabbitmq集群

    docker版本:18.09.6 或以上 rabbitmq镜像版本:rabbitmq:3.9.5-management 一.拉镜像: docker pull rabbitmq:3.9.5-manage ...

  3. 使用Docker构建redis集群--最靠谱的版本

    1集群结构说明 集群中有三个主节点,三个从节点,一共六个结点.因此要构建六个redis的docker容器.在宿主机中将这六个独立的redis结点关联成一个redis集群.需要用到官方提供的ruby脚本 ...

  4. RabbitMQ系列(五)使用Docker部署RabbitMQ集群

    概述 本文重点介绍的Docker的使用,以及如何部署RabbitMQ集群,最基础的Docker安装,本文不做过多的描述,读者可以自行度娘. Windows10上Docker的安装 因为本人用的是Win ...

  5. Docker环境下的前后端分离项目部署与运维(八)使用Docker部署RabbitMQ集群

    下载RabbitMQ镜像 镜像地址RabbitMQ Docker官方认证镜像地址:https://hub.docker.com/_/rabbitmq 安装命令安装之前,切记把Docker Hub设置为 ...

  6. 使用docker构建hadoop集群

    docker的使用越来越普遍了,大家不知道docker的还需要进一步学习一下.这次咱们使用docker去进行hadoop集群的构建. 使用docker构建的好处真的很多,一台电脑上可以学习安装很多想做 ...

  7. Docker 构建 redis 集群

    安装docker 1.yum install docker 方法一: 1. docker pull redis 2.docker run -d --name redis-1 -p 7001:6379 ...

  8. RabbitMQ(四):使用Docker构建RabbitMQ高可用负载均衡集群

    本文使用Docker搭建RabbitMQ集群,然后使用HAProxy做负载均衡,最后使用KeepAlived实现集群高可用,从而搭建起来一个完成了RabbitMQ高可用负载均衡集群.受限于自身条件,本 ...

  9. Docker:搭建RabbitMQ集群

    RabbitMQ原理介绍(一) RabbitMQ安装使用(二) RabbitMQ添加新用户并支持远程访问(三) RabbitMQ管理命令rabbitmqctl详解(四) RabbitMQ两种集群模式配 ...

随机推荐

  1. (78)Wangdao.com第十五天_JavaScript 面向对象

    面向对象编程(Object Oriented Programming,缩写为 OOP) 是目前主流的编程范式. 是单个实物的抽象, 是一个容器,封装了属性(property)和方法(method),属 ...

  2. [LeetCode] Flatten a Multilevel Doubly Linked List 压平一个多层的双向链表

    You are given a doubly linked list which in addition to the next and previous pointers, it could hav ...

  3. Educational Codeforces Round 5

    616A - Comparing Two Long Integers    20171121 直接暴力莽就好了...没什么好说的 #include<stdlib.h> #include&l ...

  4. c语言的二进制表示的是什么码

    int -1 的二进制是 1111 1111 1111 1111 1111 1111 1111 1111 int -2 的二进制是 1111 1111 1111 1111 1111 1111 1111 ...

  5. Unity进阶----AssetBundle_01(2018/10/30)

    AssetBundle作用和定义 1).AssetBundle是一个压缩包包含模型.贴图.预制体.声音.甚至整个场景,可以在游戏运行的时候被加载: 2).AssetBundle自身保存着互相的依赖关系 ...

  6. Trivial File Transfer Protocol (TFTP)

    Assignment 2The Trivial File Transfer Protocol (TFTP) is an Internet software utility fortransferrin ...

  7. Spring boot +mybatis 连接mysql数据库,获取JDBC失败,服务器时区价值”Oйu±e×¼e±¼的识别或代表多个时区

    报出的错误 Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connec ...

  8. C# 图片识别

    项目需要识别图片上的信息,网上搜索试了Asprise-OCR.Microsoft Office Document Imaging(Office 2007) 组件实现两种方式,后者可以识别中文等其他语言 ...

  9. Vue项目在开发环境跨域和生成环境部署跨域问题解决

    一.在dev环境下的跨域问题解决1.项目使用的是axios请求网络,将baseUrl修改为/api (这里是使用webpack提供的代理功能将/api代理成目标接口host) axios.defaul ...

  10. linux系统执行mysql脚本:Can't connect to local MySQL server through socket '/tmp/mysql.sock'

    问题原因:系统找不到临时文件夹下的.sock文件了 解决办法:看一下是不是其他目录下有mysl的.sock文件,使用命令指定到该文件 mysql --socket=/home/mysql/mysql- ...