Docker-Compose使用python连接到远程MQTT代理

时间:2019-01-08 08:55:32

标签: python docker docker-compose mqtt

对Docker-Compose来说是全新的,我有点反复地断脸。我尝试使用可独立运行的测试python脚本通过docker-compose连接到现有的mqtt代理(另一台PC上的代理)。

这是Python测试脚本。我也尝试在终端机中打印,但是没有运气。因此,在这一方面也有所帮助。

import json
import base64
import binascii
import time
import datetime
from collections import defaultdict
import paho.mqtt.client as mqtt
import paho.mqtt.publish as publish
import ssl

def on_message(mosq, obj, msg):
    print(msg.topic + " " + str(msg.qos) + " " + str(msg.payload))

def on_connect(client, userdata, a, b):
    print("Connected to Broker")




def on_disconnect(client, userdata, rc):
    print("Disconnected from MQTT server with code: ", rc)


mqttc = mqtt.Client(client_id="RELAY", clean_session=False)
mqttc.on_message = on_message
mqttc.on_connect = on_connect
mqttc.on_disconnect = on_disconnect
mqttc.connect("1.1.1.2", 1883, 60)

mqttc.loop_start()

counter = 0 
while True:
    print("Sending MSG")
    counter=counter+1
    response="MESSAGE No: "+ str(counter) 
    mqttc.publish("Walrus/test", response)

    time.sleep(30)

这是我尝试过的yml文件的数千个实例之一。

version: '3'
services:
  mqtt:
     broker: 1.1.1.2
     port:1883

此实例仅返回不支持代理的配置选项

这是Dockerfile

FROM python:3.6.1-alpine

ADD . /pyapp
WORKDIR /pyapp
ENV PATH=/home/ubuntu/.virtualenvs/bin:$PATH
RUN pip install --upgrade pip
RUN pip install --upgrade setuptools
RUN pip install -r requirements.txt

EXPOSE 1883

CMD ['python', '-u', 'app.py']

我见过的任何教程都是创建代理或将代理用作服务/程序包。我认为我想做的事情要简单得多,但是我还没有找到教程。我知道我缺少一些基本知识。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

您不能在docker-compose文件中指定外部代理,这是用于指定使用docker创建的服务。

您能做的最好的事情就是将远程代理的详细信息作为要传递给脚本的环境变量。

您的脚本容器的EXPOSE 1883行也没有指向性,因为它是客户端而不是“服务器”。

如评论中所述,您应该完全按照本教程进行操作,以便在尝试执行其他操作之前获得如何使用docker-compose构建复合服务的良好基础。