无法访问另一个泊坞窗容器中的本地进程
我试图从PHP连接到一个RabbitMQdocker容器。 我得到的错误是Uncaught exception 'ErrorException' with message 'stream_socket_client(): php_network_getaddresses: getaddrinfo failed: Name or service not known'
。 我认为这是我如何将程序指向RabbitMQ进程的问题。
我认为导致错误的代码片段是
$connection = new AMQPStreamConnection(getenv('MESSAGE_BROKER_HOST'), 5672, 'guest', 'guest');
我正在访问的环境variables在.env中定义为
MESSAGE_BROKER_HOST=amqp://rabbitmq
我不是很习惯docker,但是我觉得这个应该是可行的,因为这个代码运行的过程已经把docker-compose文件中的RabbitMQ链接成了“rabbitmq”。
MESSAGE_BROKER_HOST
env应该是没有amqp://
rabbitmq,因为phpamqp-lib不支持DSN。
如果你想处理真正的DSN看enqueue / amqp-lib 。
代码如下所示:
<?php use Enqueue\AmqpLib\AmqpConnectionFactory; $factory = new AmqpConnectionFactory('amqp://guest:guest@rabbitmq:5672/%2f');
你的方法看起来不错。 我唯一能想到的问题是guest
用户权限不足。 RabbitMQ的默认guest
用户只能从本地主机访问。 尽pipe权限不足不应该引发unknown service
错误。
尝试创build一个新的用户可能会解决这个问题。 有关访客用户权限的详细信息,请参阅以下链接: https : //www.rabbitmq.com/access-control.html