剛開始,關于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容器的想法。
Fork了bijukunjummen/docker-rabbitmq-cluster的庫到自己的Github庫.
Clone自己的VAllens/docker-rabbitmq-cluster庫到本地。
看了一邊原作者寫的代碼后,直接用Notepad++批量替換3.6.10為3.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
文章列表
留言列表
