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:
parent
ee1fd1718b
commit
5487395fb6
13
docker/1.4.4/Dockerfile
Normal file
13
docker/1.4.4/Dockerfile
Normal 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
49
docker/1.4.4/README.md
Normal 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.
|
5
docker/1.4.4/docker-entrypoint.sh
Executable file
5
docker/1.4.4/docker-entrypoint.sh
Executable file
@ -0,0 +1,5 @@
|
|||||||
|
#!/bin/ash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
exec "$@"
|
||||||
|
|
13
docker/1.4.8/Dockerfile
Normal file
13
docker/1.4.8/Dockerfile
Normal 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
49
docker/1.4.8/README.md
Normal 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.
|
5
docker/1.4.8/docker-entrypoint.sh
Executable file
5
docker/1.4.8/docker-entrypoint.sh
Executable file
@ -0,0 +1,5 @@
|
|||||||
|
#!/bin/ash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
exec "$@"
|
||||||
|
|
4
docker/README.md
Normal file
4
docker/README.md
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
# Docker Images
|
||||||
|
|
||||||
|
This directory contains the required files to build Mosquitto Docker images.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user