我通过运行以下命令
创建了rabbitmq容器docker run -d --hostname My-rabbit --name test-rabbit -p 15672:15672 rabbitmq:3-management
创建了一个名为userrabbit的用户并获得了以下权限
rabbitmqctl add_user userrabbit password
rabbitmqctl set_user_tags userrabbit administrator
rabbitmqctl set_permissions -p / userrabbit ".*" ".*" ".*"
这(测试兔)的IP是172.17.0.3
我创建了一个容器(172.17.0.4),其中我的应用程序正在运行,我需要提供rabbitmq的url,我已经提供了如下所示的URL
transport_url = rabbit://userrabbit:password@172.17.0.3:15672/
在容器(172.17.0.4)的日志中,它显示为
AMQP server 172.17.0.3:15672 closed the connection. Check login credentials: Socket closed
但是我能够使用与下面所示相同的凭据从容器(172.17.0.4)ping RabbitMq
curl -i -u userrabbit:password http://172.17.0.3:15672/api/whoami
HTTP/1.1 200 OK
vary: Accept-Encoding, origin
Server: MochiWeb/1.1 WebMachine/1.10.0 (never breaks eye contact)
Date: Tue, 14 Feb 2017 17:06:39 GMT
Content-Type: application/json
Content-Length: 45
Cache-Control: no-cache
{"name":"userrabbit","tags":"administrator"}
答案 0 :(得分:1)
2件事......
5672
transport_url
您列出的15672
端口是网络管理控制台
您需要通过docker网络将容器联网。
最简单的方法是使用--link
选项,在run
时间提供给第二个容器。
docker run --link test-rabbit:test-rabbit (... other options here)
通过添加--link test-rabbit:test-rabbit
选项,您的应用程序将能够将test-rabbit
视为具有IP地址的有效网络名称。
通过这两项修复,您的transport_url
就会变成这个
transport_url = rabbit://userrabbit:password@test-rabbit:5672/
使用--link
是最简单的启动方式,但可扩展性不高。
docker-compose
可以很容易地在容器之间添加链接
您还可以通过命令行工具和docker-compose创建自定义docker网络,以将容器连接在一起。这是更多的工作,但长期更好。
答案 1 :(得分:0)
您需要使用def upper: String => String = _.toUpperCase
选项为每个docker容器指定主机名,并为所有其他容器添加String => String
条目,这可以使用--hostname
选项或手动编辑/etc/host
档案。
首先创建一个网络,以便您可以分配IP:--add-host
然后运行容器:
/etc/hosts
和第二个
docker network create --subnet=172.18.0.0/16 mynet1
答案 2 :(得分:0)
创建一个docker网络,以便Rabbitmq客户端可以连接到Rabbitmq服务器,两者均作为docker容器运行。 例如
docker network创建sdk-net
然后使用该网络运行rabbitmq泊坞窗,并为其命名。
docker run -d --rm --name demo-rabbit --net sdk-net -p 5672:5672 -p 15672:15672 rabbitmq:3.6.15-management-alpine
像这样运行客户端(请在运行命令sdk-net中记录网络名称
docker run --rm -p 8090:8090 --net sdk-net pythontest
在您的客户端中可以访问Docker容器的名称。这样AMQ连接字符串将变为
amqp_url ='amqp:// demo-rabbit:5672 /'