Public | Automated Build

Last pushed: a month ago
Short Description
mosquitto mqtt broker based on Debian Jessie default support for Websockets
Full Description

docker-mosquitto

Docker image for mosquitto



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:

License: BSD 3-Clause

Contact

Contact: Thomas Kerpe toke@toke.de

OpenPGP fingerprint: B5AD 7FCB 270D A762 46D2 A8F2 B0E6 5607 ABE5 7238

Docker Pull Command
Owner
toke
Source Repository

Comments (3)
enbogdan
6 months ago

@svh1985: usually that could come when you are running it on an unsupported platform. I had the same issue (although I was sure that at a given moment I ran a container on RPi3, but guess I was wrong). Summary: this container uses a distro that is not supported on ARM. The distros usually supported on RPi3 (ARM platform) are tagged and/or named with "armfh".

svh1985
6 months ago

I'm installing on a RPi 3 with Jessie Lite, when running I'm getting: standard_init_linux.go:178: exec user process caused "exec format error"

Any idea whats wrong?

zx1986
6 months ago

How could I config QoS for this container?