我已經按照How to use this image,在 Docker 中拉取和執行最新的影像。發件人應用程式未 dockerized,因此在本地環境中運行。
docker pull rabbitmq docker
run -d --hostname my-rabbit --name bunny-queue rabbitmq:3
它似乎按預期運行,我可以在日志中驗證主機名和資料庫是否如文章中所述。我沒有看到記錄的錯誤,只有一些關于重新初始化索引的警告。
節點:rabbit@my-rabbit
資料庫目錄:/var/lib/rabbitmq/mnesia/rabbit@my-rabbit
然后,我建立了一個工廠,并嘗試建立一個連接(如圖所示如這里)。
ConnectionFactory factory = new() { HostName = "my-rabbit" };
using IConnection connection = factory.CreateConnection();
using IModel channel = connection.CreateModel();
我為該HostName欄位嘗試了不同的值(有和沒有顯式埠)。我用谷歌搜索了拋出的確切例外(沒有一個指定的端點是可達的)。我以前從來沒有遇到過這部分的問題,所以我覺得這與我在 Docker 中本地運行兔子有關。最近的問題是這個問題,但對于遠程服務器,當我運行本地默認值時,如官方檔案中所示。有人建議做工廠的全金屬外套配置。我沒有讓它以這種方式作業,我覺得官方檔案中的默認值應該適用于基本的疤痕,這意味著問題出在其他地方。
我還嘗試啟動另一個影像,包括此處所示的管理工具。當我(作為訪客)訪問時,我看到 AMQP 協議系結到::埠5672。據我所知,沒有報告任何錯誤、警告或問題。
docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3.9-management
不知道如何進一步調查。
uj5u.com熱心網友回復:
您有多種選擇:
- 將容器的埠系結到主機的埠,然后連接到主機的埠。要將容器埠系結到主機埠,請
-p在啟動容器時使用開關 - 在“主機”網路模式下運行 docker 容器并連接到主機的埠。這可以通過指定
--network host選項來實作。您的應用程式的所有埠都將可用,就像您已在主機上本地啟動應用程式一樣。 - 創建一個 docker 網路并在同一網路中運行 RabbitMQ 和您的應用程式。連接到 rabbitmq 容器的埠。要創建 docker 網路,請運行
docker network create name,然后使用--network name. - 在docker-compose檔案中定義您的容器。檔案中的所有容器將自動共享同一個網路。您也可以定義自定義網路并將某些容器僅連接到特定網路。
作為#1 的示例,應該使用以下命令執行兔子。
docker run -detach --hostname rabbitmq --publish 5672:5672 --name bunny rabbitmq:3
然后,在工廠中,需要通過本地環境的主機。
ConnectionFactory factory = new() { HostName = "localhost" };
using IConnection connection = factory.CreateConnection();
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/395163.html
上一篇:Selenium跳過測驗并在容器上執行時拋出錯誤“SessionNotCreatedException:無法啟動新會話”
