繁体   English   中英

无法访问另一个Docker容器中的本地进程

[英]Trouble accessing a local process in another docker container

我正在尝试从PHP连接到RabbitMQ docker容器。 我收到的错误是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');

我正在访问的环境变量在.env中定义为

MESSAGE_BROKER_HOST=amqp://rabbitmq

我不太习惯docker,但是我认为这应该可行,因为运行此代码的过程在docker-compose文件中链接了RabbitMQ作为“ rabbitmq”。

MESSAGE_BROKER_HOST ENV应rabbitmqamqp://因为phpamqp-lib中不支持的DSN。

如果您想使用真正的DSN,请查看enqueue / amqp-lib

代码如下所示:

<?php
use Enqueue\AmqpLib\AmqpConnectionFactory;

$factory = new AmqpConnectionFactory('amqp://guest:guest@rabbitmq:5672/%2f');

您的方法看起来不错。 我能想到的唯一问题是guest用户权限不足。 RabbitMQ的默认guest用户只能从本地主机访问。 尽管权限不足不应引发unknown service错误。

尝试创建一个新用户可能会解决该问题。 有关来宾用户权限的详细信息,可以查看以下链接: https : //www.rabbitmq.com/access-control.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM