Environment
- Raspberry Pi 3 Model B
Install and run as service
Taken from YouTube.
Installation
$ sudo apt-get update $ sudo apt-get dist-upgrade ### Install mosquitto $ sudo apt-get install mosquitto ### Optional - install mosquitto clients $ sudo apt-get install mosquitto-clients
Install and run in Docker container
Based on this.
install docker
### Install Docker
$ curl -fsSL get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh
### Pull Mosquitto image
$ docker pull eclipse-mosquitto
RUN with default configuration
$ docker run -it -p 1883:1883 -p 9001:9001 --restart unless-stopped eclipse-mosquitto
run with custom mosquitto configuration
Say, we want to persist Mosquitto log in local file system
- create local mosquitto.conf (e.g. at /home/pi/mosquitto/config/mosquitto.conf location)
- add this line to it:
log_dest /mosquitto/log/mosquitto.log
Then run the container:
$ docker run -it -p 1883:1883 -p 9001:9001 --restart unless-stopped -v /home/pi/mosquitto/config/mosquitto.conf:/mosquitto/config/mosquitto.conf -v /mosquitto/log eclipse-mosquitto
Inspect the container:
### Figure out container id
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED...
4aaf067565c9 eclipse-mosquitto "/docker-entrypoint.…" 14 minutes...
### Inspect rge container
$ docker inspect 4aaf067565c9
...
"Mounts": [
{
"Type": "bind",
"Source": "/home/pi/mosquitto/config/mosquitto.conf",
"Destination": "/mosquitto/config/mosquitto.conf",
"Mode": "",
"RW": true,
"Propagation": "rprivate"
},
{
"Type": "volume",
"Name": "7cbeec58f1dee862c14b65b1ab59b180df1ec5fc4736a0a88136a28c88e5e68c",
"Source": "/var/lib/docker/volumes/7cbeec58f1dee862c14b65b1ab59b180df1ec5fc4736a0a88136a28c88e5e68c/_data",
"Destination": "/mosquitto/log",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
},
{
"Type": "volume",
"Name": "e5f9ff21ba6a94a84347bcf6aa7203e510db1ea578da63cbe8ce256d96b44914",
"Source": "/var/lib/docker/volumes/e5f9ff21ba6a94a84347bcf6aa7203e510db1ea578da63cbe8ce256d96b44914/_data",
"Destination": "/mosquitto/data",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
}
],
...
### Check log file
$ sudo cat /var/lib/docker/volumes/7cbeec58f1dee862c14b65b1ab59b180df1ec5fc4736a0a88136a28c88e5e68c/_data/mosquitto.log
1548170247: mosquitto version 1.5.5 starting
1548170247: Config loaded from /mosquitto/config/mosquitto.conf.
1548170247: Opening ipv4 listen socket on port 1883.
1548170247: Opening ipv6 listen socket on port 1883.
...
See more on how to run mosquitto in docker container here.
Testing
### Console 1
$ mosquitto_sub -t "hellomosquitto"
### Console 2
$ mosquitto_pub -t "hellomosquitto" -m "Hello, Mosquitto!"
### Console 1 prints
Hello, Mosquitto!