Commit 3fc4e45e authored by Pedro Eduardo Trujillo's avatar Pedro Eduardo Trujillo
Browse files

Elimina exposición de puertos, delega en Traefik

Para que puedan convivir ambos servicios (vernemq0 y vernemq) es
necesario dejar de exponer puertos desde ellos, ya que no pueden hacerlo
ambos pero sí se desea que ambos den servicio.

Como alternativa, se delega en Traefik para exponer la comunicación,
mediante TCP para MQTT y HTTP para MQTTWS.
parent b3bb14b5
Loading
Loading
Loading
Loading
+5 −6
Original line number Diff line number Diff line
@@ -10,14 +10,13 @@ DOCKER_VERNEMQ_DISTRIBUTED_COOKIE=changeme
DOCKER_VERNEMQ_SWARM=1
DOCKER_VERNEMQ_ACCEPT_EULA=yes

EXTERNAL_MQTT_PORT=1883
HTTP_PORT=8888
MQTT_PORT=1883
EXTERNAL_MQTTWS_PORT=8080
MQTTWS_PORT=8080
PORT_MODE=ingress

HTTP_PORT=8888
TRAEFIK_SUBDOMAIN=vernemq
TRAEFIK_HTTP_ENTRYPOINT=http
TRAEFIK_MQTT_ENTRYPOINT=mqtt
TRAEFIK_HTTP_SUBDOMAIN=vernemq
TRAEFIK_MQTT_SUBDOMAIN=mqtt
PUBLIC_HOSTNAME=change.me

VERNEMQ_DATA_VOL_NAME=vernemq-data-vol
+21 −17
Original line number Diff line number Diff line
@@ -4,15 +4,6 @@ x-vernemq-base: &vernemq-base
    vernemq-net:
    metric-net:
    traefik-net:
  ports:
    - target: ${MQTT_PORT}
      published: ${EXTERNAL_MQTT_PORT}
      protocol: tcp
      mode: ${PORT_MODE}
    - target: ${MQTTWS_PORT}
      published: ${EXTERNAL_MQTTWS_PORT}
      protocol: tcp
      mode: ${PORT_MODE}
  healthcheck:
    test: wget -q -O - http://127.0.0.1:${HTTP_PORT}/health
    interval: ${HEALTHCHECK_INTERVAL:-30s}
@@ -44,16 +35,29 @@ x-vernemq-deploy: &vernemq-deploy
    delay: ${VERNEMQ_UPDATE_DELAY:-5m}
  labels:
    traefik.enable: ${TRAEFIK_ENABLE:-true}
    traefik.http.routers.vernemq.entrypoints: ${TRAEFIK_ENTRYPOINT:-http}
    traefik.http.routers.vernemq.rule: Host(`${TRAEFIK_SUBDOMAIN}.${PUBLIC_HOSTNAME}`)
    traefik.http.middlewares.vernemq-root-redirect.redirectregex.regex: ^(.*://${TRAEFIK_SUBDOMAIN}.${PUBLIC_HOSTNAME})/$$

    traefik.http.routers.vernemq-dashboard.entrypoints: ${TRAEFIK_HTTP_ENTRYPOINT}
    traefik.http.routers.vernemq-dashboard.rule: Host(`${TRAEFIK_HTTP_SUBDOMAIN}.${PUBLIC_HOSTNAME}`)
    traefik.http.middlewares.vernemq-root-redirect.redirectregex.regex: ^(.*://${TRAEFIK_HTTP_SUBDOMAIN}.${PUBLIC_HOSTNAME})/$$
    traefik.http.middlewares.vernemq-root-redirect.redirectregex.replacement: $$1/status
    traefik.http.middlewares.vernemq-root-redirect.redirectregex.permanent: 'true'
    traefik.http.routers.vernemq.middlewares: vernemq-root-redirect
    traefik.http.services.vernemq.loadbalancer.server.port: ${HTTP_PORT}
    traefik.http.services.vernemq.loadbalancer.healthcheck.path: ${TRAEFIK_HEALTHCHECK_PATH:-/health}
    traefik.http.services.vernemq.loadbalancer.healthcheck.interval: ${TRAEFIK_HEALTHCHECK_INTERVAL:-1m}
    traefik.http.services.vernemq.loadbalancer.healthcheck.timeout: ${TRAEFIK_HEALTHCHECK_TIMEOUT:-15s}
    traefik.http.routers.vernemq-dashboard.middlewares: vernemq-root-redirect
    traefik.http.services.vernemq-dashboard.loadbalancer.server.port: ${HTTP_PORT}
    traefik.http.services.vernemq-dashboard.loadbalancer.healthcheck.path: ${TRAEFIK_HEALTHCHECK_PATH:-/health}
    traefik.http.services.vernemq-dashboard.loadbalancer.healthcheck.interval: ${TRAEFIK_HEALTHCHECK_INTERVAL:-1m}
    traefik.http.services.vernemq-dashboard.loadbalancer.healthcheck.timeout: ${TRAEFIK_HEALTHCHECK_TIMEOUT:-15s}
    traefik.http.routers.vernemq-dashboard.service: vernemq-dashboard

    traefik.tcp.routers.vernemq-mqtt.entrypoints: ${TRAEFIK_MQTT_ENTRYPOINT}
    traefik.tcp.routers.vernemq-mqtt.rule: HostSNI(`*`)
    traefik.tcp.services.vernemq-mqtt.loadbalancer.server.port: ${MQTT_PORT}
    traefik.tcp.services.vernemq-mqtt.loadbalancer.proxyprotocol: 'true'
    traefik.tcp.routers.vernemq-mqtt.service: vernemq-mqtt

    traefik.http.routers.vernemq-mqttws.entrypoints: ${TRAEFIK_HTTP_ENTRYPOINT}
    traefik.http.routers.vernemq-mqttws.rule: Host(`${TRAEFIK_MQTT_SUBDOMAIN}.${PUBLIC_HOSTNAME}`)
    traefik.http.services.vernemq-mqttws.loadbalancer.server.port: ${MQTTWS_PORT}
    traefik.http.routers.vernemq-mqttws.service: vernemq-mqttws
  resources:
    limits:
      cpus: '${VERNEMQ_RESOURCES_LIMITS_CPUS:-1}'