Deze MQTT broker kan als tweede systeem geïnstalleerd worden, zodat je op je locale netwerk MQTT toepassingen kan draaien (domotica, remote control etc)
Installeer via muon het pakket mosquitto-clients om de applicaties mosquitto_sub en mosquitto_pub te bekomen (testing)
Haal de image binnen
sudo docker pull eclipse-mosquitto
Maak op je host een folderstructuur aan die gebruikt kan worden voor verschillende mqtt-brokers, dus als je nadien een update doet van de docker file, blijft de oude data bewaard.
Er worden 3 folders gebruikt in de docker image:
/mosquitto/config
/mosquitto/data
/mosquitto/log
Maak een identieke structuur aan voor de nodige file op je host systeem. Wij plaatsen deze in de root.
sudo mkdir /mosquitto
cd /mosquitto
sudo mkdir config
sudo mkdir data
sudo mkdir log
Maak nu in de folder een config file aan /mosquitto/config/mosquitto.conf
cd config
sudo touch mosquitto.conf
Editeer deze file, desnoods met de grafische interface (file en feather)
# following two lines required for > v2.0
allow_anonymous true
listener 1883
persistence true
persistence_location /mosquitto/data/
log_dest file /mosquitto/log/mosquitto.log
Run a container using the new image:
sudo docker run -it --name mosquitto -p 1883:1883 -v /mosquitto:/mosquitto/ eclipse-mosquitto
Note: if the mosquitto configuration (mosquitto.conf) was modified to use non-default ports, the docker run command will need to be updated to expose the ports that have been configured.
Start de commandline in de container:(geen bash maar sh)
sudo docker exec -it mosquitto /bin/sh
Open een nieuwe terminal tab en abboneer je op een topic
mosquitto_sub -h localhost -p 1883 -t my-mqtt-topic
De command komt niet terug omdat de output van de subscribe hierop zichtbaar zal worden.
Je kan dit nadien verlaten via ctrl-c
Open een nieuwe terminal tab en publiceer een bericht.
Voor paswoord en gebruiker kan je -u -p gebruiken
mosquitto_pub -h localhost -p 1883 -t my-mqtt-topic -m "sample-msg-1"
Je zal nu zien dat dit bericht in de subscriber terminal verschijnt.
Eens de installatie één maal heeft gedraaid, kan je deze stoppen dmv de Ctlc-c in de terminal maar beter is het om de commando's stop en start te gebruiken, vanuit een nieuw terminal venster. Hierdoor heb je geen openstaande terminal venster meer nodig na het geven van de commando's.
sudo docker stop mosquitto
sudo docker start mosquitto
Als je een auto restart wil laten gebeuren van een docker container na een reboot van de pc (bij update etc), kan je het volgende commando gebruiken om de bestaande docker file aan te passen.
sudo docker update --restart unless-stopped mosquitto
Restart van docker image is nodig om de setting persistent te maken.