Docker-Compose подключается к удаленному MQTT-брокеру с python - PullRequest
0 голосов
/ 08 января 2019

Совершенно новичок в Docker-Compose, и я как бы неоднократно ломаю себе лицо. Я пытаюсь подключиться к существующему брокеру mqtt (мой брокер на другом компьютере) через docker-compose с помощью тестового сценария на python, который работает автономно.

Это тестовый скрипт 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 голосов
/ 08 января 2019

Вы не можете указать внешнего брокера в файле docker-compose, он предназначен для указания сервисов, которые вы создаете с помощью docker.

Лучшее, что вы можете сделать, - это включить информацию об удаленном посреднике в качестве переменных среды, передаваемых в ваш сценарий.

Также нет никакого смысла в строке EXPOSE 1883 для вашего контейнера скриптов, потому что это клиент, а не "сервер".

Как уже упоминалось в комментариях, вы должны полностью следовать учебнику, чтобы получить хорошее представление о том, как создавать составные сервисы с помощью docker-compose, прежде чем пытаться делать что-то другое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...