ローカルホストで実行されているrabbitmqに接続しようとしているJavaプロセスを実行しているDockerコンテナがあります。
これまでに行った手順は次のとおりです。
私のローカルマシン(Dockerバージョン1.13.0-rc3を実行しているmacbook、ファイアウォールをオフにしてビルド4d92237)
telnet <local-ip> 5672
Dockerコンテナの内部
local-ipにpingを実行し、rabbitmq adminapiをカールさせることができますcurl -i -u username:password http://local-ip:15672/api/vhosts
正常に戻る
[{"name": "/"、 "tracing":false}]
コンテナ内からtelnetしようとすると、
"接続は外部ホストによって閉じられました"
rabbitmq.logsを見る
=エラーレポート==== AMQP接続を閉じる<0.30526.1>(local-ip:53349-> local-ip:5672):{handshake_timeout、handshake}
私のJavaスタックトレースが役立つ場合
原因:Java.net.ConnectException:Java.net.PlainSocketImpl.socketConnect(Native Method)at> Java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.Java:350)at> Java.netで接続が拒否されました(接続> refused)。 AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl。> Java:206)at> Java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.Java:188)at Java.net.SocksSocketImpl.connect(SocksSocketImpl.Java:392)at Java.net.Socket.connect (Socket.Java:589)at> com.rabbitmq.client.impl.FrameHandlerFactory.create(FrameHandlerFactory.ja> va:32)at> com.rabbitmq.client.impl.recovery.RecoveryAwareAMQConnectionFactory.newCon> nection(RecoveryAwareAMQConnectionFactory.Java :35)
docker network inspect bridge
[{"Name": "bridge"、 "Id": "716f935f19a107225650a95d06eb83d4c973b7943b1924815034d469164affe5"、 "Created": "2016-12-11T15:34:41.950148125Z"、 "Scope": "local"、 "Driver": "bridge" 、 "EnableIPv6":false、 "IPAM":{"Driver": "default"、 "Options":null、 "Config":[{"Subnet": "172.17.0.0/16"、 "Gateway": "172.17 .0.1 "}]}、"内部 ":false、"アタッチ可能 ":false、"コンテナ ":{" 9722a49c4e99ca5a7fabe56eb9e1c71b117a1e661e6c3e078d9fb54d7d276c6c ":{"名前 ":"テスト "、"エンドポイントID ":{"名前 ":"テスト "、"エンドポイントID ":{"名前 ":"テスト "、"エンドポイントID " 02:42:ac:11:00:02 "、" IPv4Address ":" 172.17.0.2/16 "、" IPv6Address ":" "}}、"オプション ":{" com.docker.network.bridge.default_bridge " : "true"、 "com.docker.network.bridge.enable_icc": "true"、 "com.docker.network.bridge.enable_ip_masquerade": "true"、 "com.docker.network.bridge.Host_binding_ipv4": " 0.0.0.0 "、" com.docker.network.bridge.name ":" docker0 "、" com.docker.network.driver.mtu ":" 1500 "}、"ラベル ":{}}]
何が足りないのですか?
私にとってこれはうまくいきます!
イメージをインストールしましたdocker pullrabbitmq:3-管理
実行します
docker run -d --hostname haroldjcastillo --name rabbit-server -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin2017 -p 5672:5672 -p 15672:15672 rabbitmq:3-management
最も重要なのは、接続ポートと管理ポートを追加することです-p 5672:5672 -p 15672:15672
Dockerでホストを参照してください
docker-machine ip
私の場合は戻る:
192.168.99.100
管理http://192.168.99.100:15672に移動
Spring Bootの場合、これを構成するか、別の接続に適しています
spring.rabbitmq.Host=192.168.99.100
spring.rabbitmq.username=admin
spring.rabbitmq.password=admin2017
spring.rabbitmq.port=5672
ご多幸を祈る
再起動後、すべてが機能していました。 Rabbitが.configの変更を尊重して使用していたとは思わない