# fems-mqtt/Dockerfile FROM eclipse-mosquitto:latest ARG MQTT_USERNAME=fems ARG MQTT_PASSWORD=fems123! ARG NODE_RED_USERNAME=node_red ARG NODE_RED_PASSWORD=nodered123! # Create directories RUN mkdir -p /mosquitto/config /mosquitto/data /mosquitto/log /mosquitto/certs # Copy configuration COPY ./config/mosquitto.conf /mosquitto/config/ COPY ./config/acl /mosquitto/config/ # Create entrypoint script RUN echo '#!/bin/sh' > /docker-entrypoint.sh && \ echo 'set -e' >> /docker-entrypoint.sh && \ echo 'touch /mosquitto/data/passwd' >> /docker-entrypoint.sh && \ echo 'chmod 600 /mosquitto/data/passwd' >> /docker-entrypoint.sh && \ echo 'mosquitto_passwd -b /mosquitto/data/passwd "${MQTT_USERNAME}" "${MQTT_PASSWORD}"' >> /docker-entrypoint.sh && \ echo 'mosquitto_passwd -b /mosquitto/data/passwd "${NODE_RED_USERNAME}" "${NODE_RED_PASSWORD}"' >> /docker-entrypoint.sh && \ echo 'chown -R mosquitto:mosquitto /mosquitto' >> /docker-entrypoint.sh && \ echo 'chmod 600 /mosquitto/config/acl' >> /docker-entrypoint.sh && \ echo 'chmod -R 700 /mosquitto/log' >> /docker-entrypoint.sh && \ echo 'exec "$@"' >> /docker-entrypoint.sh && \ chmod +x /docker-entrypoint.sh # Set initial permissions RUN chown -R mosquitto:mosquitto /mosquitto && \ chmod 600 /mosquitto/config/acl && \ chmod -R 700 /mosquitto/log EXPOSE 1883 8883 USER mosquitto ENTRYPOINT ["/docker-entrypoint.sh"] CMD ["/usr/sbin/mosquitto", "-c", "/mosquitto/config/mosquitto.conf"]