From 5487395fb67ad2e2b6dac1ff67bd0ac289383f09 Mon Sep 17 00:00:00 2001 From: David Audet Date: Wed, 21 Sep 2016 13:35:05 -0700 Subject: [PATCH] Adding Dockerfiles to build versioned Docker images (#226) * Adding Dockerfiles to build versioned Docker images Dockerfiles have been added to create Docker images for Mosquitto v1.4.4 and v1.4.8 using Alpine Linux as a base. Different directories have been added for each version to decouple the configuration and entrypoint scripts. Currently they contain the same content, but this could change in the future. Docker Hub will also need to pull from specific directories when official docker images will be built and hosted on Docker Hub. * Removing unnecessary default config and volumes Mount points are created in the image, but volumes are not automatically created. The user can still create volumes for these mount points, but is not required to. The default configuration file is now copied from /etc/mosquitto/mosquitto.conf to /mosquitto/config/mosquitto.conf. The user can override this file by mounting a local configuration file to /mosquitto/config. Signed-off-by: David Audet --- docker/1.4.4/Dockerfile | 13 ++++++++ docker/1.4.4/README.md | 49 +++++++++++++++++++++++++++++++ docker/1.4.4/docker-entrypoint.sh | 5 ++++ docker/1.4.8/Dockerfile | 13 ++++++++ docker/1.4.8/README.md | 49 +++++++++++++++++++++++++++++++ docker/1.4.8/docker-entrypoint.sh | 5 ++++ docker/README.md | 4 +++ 7 files changed, 138 insertions(+) create mode 100644 docker/1.4.4/Dockerfile create mode 100644 docker/1.4.4/README.md create mode 100755 docker/1.4.4/docker-entrypoint.sh create mode 100644 docker/1.4.8/Dockerfile create mode 100644 docker/1.4.8/README.md create mode 100755 docker/1.4.8/docker-entrypoint.sh create mode 100644 docker/README.md diff --git a/docker/1.4.4/Dockerfile b/docker/1.4.4/Dockerfile new file mode 100644 index 00000000..b568aeda --- /dev/null +++ b/docker/1.4.4/Dockerfile @@ -0,0 +1,13 @@ +FROM alpine:3.3 +MAINTAINER David Audet + +LABEL Description="Eclipse Mosquitto MQTT Broker" + +RUN apk --no-cache --update add mosquitto=1.4.4-r0 && \ + mkdir -p /mosquitto/config /mosquitto/data /mosquitto/log && \ + cp /etc/mosquitto/mosquitto.conf /mosquitto/config && \ + chown -R mosquitto:mosquitto /mosquitto + +COPY docker-entrypoint.sh / +ENTRYPOINT ["/docker-entrypoint.sh"] +CMD ["/usr/sbin/mosquitto", "-c", "/mosquitto/config/mosquitto.conf"] diff --git a/docker/1.4.4/README.md b/docker/1.4.4/README.md new file mode 100644 index 00000000..795dd2b1 --- /dev/null +++ b/docker/1.4.4/README.md @@ -0,0 +1,49 @@ +#Eclipse Mosquitto v1.4.4 Docker Image + +##Mount Points + +Three mount points have been created in the image to be used for configuration, persistent storage and logs. +``` +/mosquitto/config +/mosquitto/data +/mosquitto/log +``` + + +##Configuration + +When running the image, the default configuration values are used. +To use a custom configuration file, mount a **local** configuration file to `/mosquitto/conf/mosquitto.conf` +``` +docker run -it -p 1883:1883 -p 9001:9001 -v mosquitto.conf:/mosquitto/data/mosquitto.conf mosquitto:1.4.4 +``` + +Configuration can be changed to: + +* persist data to `/mosquitto/data` +* log to `/mosquitto/log/mosquitto.log` + +i.e. add the following to `mosquitto.conf`: +``` +persistence true +persistence_location /mosquitto/data/ + +log_dest file /mosquitto/log/mosquitto.log +``` + +**Note**: If a volume is used, the data will persist between containers. + +##Build +Build the image: +``` +docker build -t mosquitto:1.4.4 . +``` + +##Run +Run a container using the new image: +``` +docker run -it -p 1883:1883 -p 9001:9001 -v mosquitto.conf:/mosquitto/data/mosquitto.conf -v /mosquitto/data -v /mosquitto/log mosquitto:1.4.4 +``` +:boom: 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. \ No newline at end of file diff --git a/docker/1.4.4/docker-entrypoint.sh b/docker/1.4.4/docker-entrypoint.sh new file mode 100755 index 00000000..1a9fc8d0 --- /dev/null +++ b/docker/1.4.4/docker-entrypoint.sh @@ -0,0 +1,5 @@ +#!/bin/ash + +set -e +exec "$@" + diff --git a/docker/1.4.8/Dockerfile b/docker/1.4.8/Dockerfile new file mode 100644 index 00000000..b005b530 --- /dev/null +++ b/docker/1.4.8/Dockerfile @@ -0,0 +1,13 @@ +FROM alpine:3.4 +MAINTAINER David Audet + +LABEL Description="Eclipse Mosquitto MQTT Broker" + +RUN apk --no-cache --update add mosquitto=1.4.8-r2 && \ + mkdir -p /mosquitto/config /mosquitto/data /mosquitto/log && \ + cp /etc/mosquitto/mosquitto.conf /mosquitto/config && \ + chown -R mosquitto:mosquitto /mosquitto + +COPY docker-entrypoint.sh / +ENTRYPOINT ["/docker-entrypoint.sh"] +CMD ["/usr/sbin/mosquitto", "-c", "/mosquitto/config/mosquitto.conf"] diff --git a/docker/1.4.8/README.md b/docker/1.4.8/README.md new file mode 100644 index 00000000..fd8ae40a --- /dev/null +++ b/docker/1.4.8/README.md @@ -0,0 +1,49 @@ +#Eclipse Mosquitto v1.4.8 Docker Image + +##Mount Points + +Three mount points have been created in the image to be used for configuration, persistent storage and logs. +``` +/mosquitto/config +/mosquitto/data +/mosquitto/log +``` + + +##Configuration + +When running the image, the default configuration values are used. +To use a custom configuration file, mount a **local** configuration file to `/mosquitto/conf/mosquitto.conf` +``` +docker run -it -p 1883:1883 -p 9001:9001 -v mosquitto.conf:/mosquitto/data/mosquitto.conf mosquitto:1.4.8 +``` + +Configuration can be changed to: + +* persist data to `/mosquitto/data` +* log to `/mosquitto/log/mosquitto.log` + +i.e. add the following to `mosquitto.conf`: +``` +persistence true +persistence_location /mosquitto/data/ + +log_dest file /mosquitto/log/mosquitto.log +``` + +**Note**: If a volume is used, the data will persist between containers. + +##Build +Build the image: +``` +docker build -t mosquitto:1.4.8 . +``` + +##Run +Run a container using the new image: +``` +docker run -it -p 1883:1883 -p 9001:9001 -v mosquitto.conf:/mosquitto/data/mosquitto.conf -v /mosquitto/data -v /mosquitto/log mosquitto:1.4.8 +``` +:boom: 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. diff --git a/docker/1.4.8/docker-entrypoint.sh b/docker/1.4.8/docker-entrypoint.sh new file mode 100755 index 00000000..1a9fc8d0 --- /dev/null +++ b/docker/1.4.8/docker-entrypoint.sh @@ -0,0 +1,5 @@ +#!/bin/ash + +set -e +exec "$@" + diff --git a/docker/README.md b/docker/README.md new file mode 100644 index 00000000..6fe5506c --- /dev/null +++ b/docker/README.md @@ -0,0 +1,4 @@ +# Docker Images + +This directory contains the required files to build Mosquitto Docker images. +