為了測試方便常常會在本機起 RabbitMQ Container,但隨著系統的演進初始化 RabbitMQ 變得越來越複雜,例如:每次都要先設定 8 組 Queue,Exchange binding …等等
工程師的美德就是懶,所以開始找辦法是不是可以讓 RabbitMQ Container 起來時就自己設定好呢?
解法
RabbitMQ 有提供設定檔來初始化,分別為放在
1 | /etc/rabbitmq/rabbitmq.config |
而這兩個檔案裡面可以設定 VirtualHost、Authorization、Exchange、Queue
rabbitmq.config
這邊特別提醒一下,內容最後面那個小點不是打錯喔,是規定就是要有的!
1 | [ |
definitions.json
1 | { |
方案一
在啟動 rabbitmq container 的時候將這兩個檔案透過 volume 的方式丟進去,這樣就可以達成目的了
1 | docker run -it \ |
方案二
如過你不幸 (?) 的跟我一樣是使用 windows container,volume 這個選擇不屬於你,因為 windows container 只能將整個資料夾 volume 進去,並不能指定單一檔案,所以如果將整個資料夾放進去,需要額外將一些本該在 /etc/rabbitmq
底下的檔案也都 copy 出來,才不會跑起來的時候少東少西的,但這個方法總覺得有點麻煩,所以我採用自己 build image 的方案
dockerfile
1 | FROM rabbitmq:3.8-management |
透過 build image 的過程中將檔案放進去,之後起起來也都不用在下 volume 指令,也算是簡單不少