Трудно отладить это. У меня есть один контейнер, запускающий сервер MQTT, а другой контейнер Python пытается подключиться.
Использование docker -compose для оркестровки и настройки сети и подключения к ней обоих контейнеров.
В настоящее время я могу подключиться к серверу MQTT независимо с помощью docker run и docker -compose, но содержимое Python по какой-то причине не может подключиться.
Я думаю это может быть проблема с брандмауэром?
В main.py я печатаю MQTT_HOST и MQTT_PORT, и я могу подключиться к тем, кто использует локальный клиент Mosquitto.
docker -compose.yml
version: "3.3"
services:
webserver:
build: ./webservice/server
ports:
- 3001:3001
- 3002:3002
networks:
- project-network
command: npm run start
inferemce:
build: ./inference
ports:
- 3003:3003
networks:
- project-network
depends_on:
- webserver
restart: on-failure
command: ["./wait-for-it.sh", "webserver:3001", "--", "python", "main.py"]
networks:
project-network:
driver: bridge
main.py
import socket
import paho.mqtt.client as mqtt
HOSTNAME = socket.gethostname()
IPADDRESS = socket.gethostbyname('localhost')
MQTT_HOST = IPADDRESS
MQTT_PORT = 3001
MQTT_KEEPALIVE_INTERVAL = 60
def connect_mqtt():
print('host', MQTT_HOST)
print('port', MQTT_PORT)
client = mqtt.Client()
client.connect(MQTT_HOST, MQTT_PORT, MQTT_KEEPALIVE_INTERVAL)
return client
def main():
client = connect_mqtt()
if __name__ == '__main__':
main()