2017-09-13 2 views
1

En utilisant Docker, j'ai pu utiliser eclipse-mosquitto pour configurer un courtier MQTT avec mon application, qui s'abonnait aux messages. J'apprends Docker en ce moment, donc voulu essayer d'ajouter deux courtiers à Docker-Compose avec des ports différents cartographiés comme ceci:Configuration de plusieurs courtiers MQTT avec Docker

version: '3' 
services: 
    myapp: 
    ... 
    links: 
     - mqtt 
     - mqtt2 
    depends_on: 
     - mqtt 
     - mqtt2 
    mqtt: 
    image: eclipse-mosquitto:latest 
    container_name: mqtt-iot 
    ports: 
     - 1883:1883 

    mqtt2: 
    image: eclipse-mosquitto:latest 
    container_name: mqtt2-iot 
    ports: 
     - 1884:1883 

De extérieur du conteneur myapp (ie de mon terminal OS X), les deux mqtt et mqtt2 fonctionnent; Je peux publier et m'abonner aux messages comme prévu.

const mqtt = require('mqtt') 
mqtt.connect('mqtt://mqtt', {port: 1883}) // Success 
mqtt.connect('mqtt://mqtt2', {port: 1884}) // Success 

Cependant, quand je suis à l'intérieur du conteneur de myapp, je ne peux me connecter à mqtt. La connexion mqtt2 déclenche immédiatement l'événement offline et aucune connexion échoue. Que dois-je faire pour que myapp utilise correctement ces deux courtiers?

+0

Afficher plus de votre code myapp – hardillb

Répondre

1

deux questions

links: 
    - mqtt 
    - mqtt2 

Liens est maintenant dépréciées et est même pas nécessaire dans votre message. Suivant lorsque vous utilisez ci-dessous

const mqtt = require('mqtt') 
mqtt.connect('mqtt://mqtt', {port: 1883}) // Success 
mqtt.connect('mqtt://mqtt2', {port: 1884}) // Success 

De l'extérieur. Ceci est basé sur les ports de l'hôte. Lorsque vous le faites à partir du conteneur de l'application, vous devez le faire comme ci-dessous

const mqtt = require('mqtt') 
mqtt.connect('mqtt://mqtt', {port: 1883}) // Success 
mqtt.connect('mqtt://mqtt2', {port: 1883}) // Success 

Le conteneur ne peut pas voir le port mappé sur l'hôte. Il verra ce qu'il y a dans le réseau. Et dans le réseau local les deux sont à l'écoute sur 1883

+0

N'y a-t-il plus besoin de 'links' maintenant? – musicliftsme

+0

Oui, pas plus besoin –