docker-mosquitto
Docker image for mosquitto - superseded by eclipse-mosquitto
Project Status
The puprose of this Container was to provide a configurable and decent mosquitto broker container. The Eclipse Mosquitto Project now provides a very similar Container - See Other Containers below. This container still uses Debian/Jessie as a base container which is kinda old.
Feel free to send Pull Requests. As I don't use this container any longer it's kinda tricky to test and keep compatibility at a level I would like.
Run
docker run -ti -p 1883:1883 -p 9001:9001 toke/mosquitto
Exposes Port 1883 (MQTT) 9001 (Websocket MQTT)
Running with persistence
Local directories / External Configuration
Alternatively you can use volumes to make the changes persistent and change the configuration.
mkdir -p /srv/mqtt/config/
mkdir -p /srv/mqtt/data/
mkdir -p /srv/mqtt/log/
# place your mosquitto.conf in /srv/mqtt/config/
# NOTE: You have to change the permissions of the directories
# to allow the user to read/write to data and log and read from
# config directory
# For TESTING purposes you can use chmod -R 777 /srv/mqtt/*
# Better use "-u" with a valid user id on your docker host
# Copy the files from the config directory of this project
# into /src/mqtt/config. Change them as needed for your
# particular needs.
docker run -ti -p 1883:1883 -p 9001:9001 \
-v /srv/mqtt/config:/mqtt/config:ro \
-v /srv/mqtt/log:/mqtt/log \
-v /srv/mqtt/data/:/mqtt/data/ \
--name mqtt toke/mosquitto
Volumes: /mqtt/config, /mqtt/data and /mqtt/log
Docker Volumes for persistence
Using Docker Volumes for persistence.
Create a named volume:
docker volume create --name mosquitto_data
Now it can be attached to docker by using -v mosquitto_data:/mqtt/data
in the
Example above. Be aware that the permissions within the volumes
are most likely too restrictive.
Start with systemd
As an example this how you run the container with systemd.
The example uses a docker volume named mosquitto_data
(see above).
[Unit]
Description=Mosquitto MQTT docker container
Requires=docker.service
Wants=docker.service
After=docker.service
[Service]
Environment=EXT_IP=123.123.123.123
Restart=always
ExecStart=/usr/bin/docker run -v /srv/mqtt/config:/mqtt/config -v /srv/mqtt/log:/mqtt/log -v mosquitto_data:/mqtt/data/ -p ${EXT_IP}:1883:1883 -p ${EXT_IP}:8883:8883 -p 127.0.0.1:9001:9001 --name mqtt toke/mosquitto
ExecStop=/usr/bin/docker stop -t 2 mqtt
ExecStopPost=/usr/bin/docker rm -f mqtt
[Install]
WantedBy=local.target
Build
git clone https://github.com/toke/docker-mosquitto.git
cd docker-mosquitto
docker build .
Other Containers
The puprose of this Container was to provide a configurable and dsecent mosquitto broker. The Eclipse Mosquitto Project now provides a very similar Container: Eclipse Mosquitto Container It should be easy to migrate to it.
Authors and license
docker-mosquitto was written by:
- Thomas Kerpe | web | mail | GitHub
- With contributions from:
- Andrea Pinazzi
- m0se
- David Medinets
- Gavin de Kock
- Raphael Ahrens
License: BSD 3-Clause
Contact
Contact: Thomas Kerpe [email protected]
OpenPGP fingerprint: B5AD 7FCB 270D A762 46D2 A8F2 B0E6 5607 ABE5 7238