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 <david.audet@ca.com>
This commit is contained in:
David Audet 2016-09-21 13:35:05 -07:00 committed by Roger Light
parent ee1fd1718b
commit 5487395fb6
7 changed files with 138 additions and 0 deletions

13
docker/1.4.4/Dockerfile Normal file
View File

@ -0,0 +1,13 @@
FROM alpine:3.3
MAINTAINER David Audet <david.audet@ca.com>
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"]

49
docker/1.4.4/README.md Normal file
View File

@ -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.

View File

@ -0,0 +1,5 @@
#!/bin/ash
set -e
exec "$@"

13
docker/1.4.8/Dockerfile Normal file
View File

@ -0,0 +1,13 @@
FROM alpine:3.4
MAINTAINER David Audet <david.audet@ca.com>
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"]

49
docker/1.4.8/README.md Normal file
View File

@ -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.

View File

@ -0,0 +1,5 @@
#!/bin/ash
set -e
exec "$@"

4
docker/README.md Normal file
View File

@ -0,0 +1,4 @@
# Docker Images
This directory contains the required files to build Mosquitto Docker images.