【问题标题】:Connecting php docker to mqtt docker将 php docker 连接到 mqtt docker
【发布时间】:2016-12-19 14:17:35
【问题描述】:

我正在 IBM Bluemix 中开发一个应用程序。我有两个码头工人

  1. Mqtt 代理 docker (https://github.com/mezz64/mqtt-broker-docker-image)

  2. 基于 PHP apache 的 docker(https://github.com/tutumcloud/apache-php)

我的机器上有一个 python 代码,我打算通过它向 Mqtt 代理发布消息。发布后,我希望 php docker 订阅 Mqtt 代理 docker 并显示消息。

我正在尝试通过在 php 代码中提供 mqtt docker 的地址来从 php docker 连接到 mqtt 代理,如下所示:

$mqtt = new phpMQTT("169.44.113.133",1883, "PHPMQTTTrial"); //Change client name to something unique

if(!$mqtt->connect()){
echo "failed";
    exit(1);
}
else
{
 echo "Success";
}

$topics['ferries/IOW/#'] = array("qos"=>0, "function"=>"procmsg");
$mqtt->subscribe($topics,0);

while($mqtt->proc()){

echo "hi";

}


$mqtt->close();

function procmsg($topic,$msg){
        echo "Msg Recieved: ".date("r")."\nTopic:{$topic}\n$msg\n";
}

但是,它无法连接。 有人可以指导并告诉我该怎么做吗?

【问题讨论】:

  • 错误信息是什么?你是如何启动容器的(提供命令)?我的猜测是,您必须将 PHP 容器链接到 MQTT 容器。
  • 169.44.113.133 是从哪里来的?为什么不是容器名称?
  • @Martin 显示 php ip 的空白页面。
  • @mustaccio ip 是 mosquitto docker 容器的地址。我尝试用 mosquitto docker 容器的名称替换它,但它显示的是空白页。
  • 169.44.113.133 是一个全局路由的 IP 地址 - 你确定这是容器的 IP 地址吗?您是从哪里获得这些信息的?

标签: docker containers ibm-cloud


【解决方案1】:
  1. 您需要创建一个网络,并且两个容器都应该在 使用--network 的同一网络。

  2. 不用IP和端口,只需在代码中使用mqtt即可 连接到mqtt 容器。

确保在运行容器时通过添加--name mqtt 命名容器,docker 将为您完成映射

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-01
    • 1970-01-01
    • 2017-12-12
    • 1970-01-01
    • 2018-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多