文章出處

剛開始,關于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


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


全站熱搜
創作者介紹
創作者 大師兄 的頭像
大師兄

IT工程師數位筆記本

大師兄 發表在 痞客邦 留言(0) 人氣()