簡體   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