Pique #11: Cómo declarar múltiples frontends y puertos en Traefik 2.1.4
En este pique, te explico de manera muy rápida como declarar múltiples frontends y puertos para un contenedor cuando usas Traefik como Reverse Proxy.
En el trabajo, estoy llevando adelante una POC (Proof of Concept) para llevar el ambiente de desarrollo a Docker, usando como Proxy Reverso, Traefik.
Uno de los componentes es un Jboss EAP. Este coso, requiere que se exponga el puerto 8080 y el 9990 para la consola de administración. Exponer la consola no trajo ningún problema, especifique el puerto, el nombre del host con sus pathprefix para que el /console y /management sean accesibles sin tener que especificar un puerto en la URL y todo salió más que bien.
El "problema" llegó cuando quise exponer el 8080, con su nombre de dominio también. Si bien no me arrojaba ningún error, no respondía con el nombre del host. Estuve un par de horas hasta que buscando y buscando, por allá, encontré que hay que generar un servicio para cada frontend, el mismo se debe especificar de esta manera:
- "traefik.http.routers.tuapp.service=tuapp"
Por último y para cerrar este pique, te muestro como quedaría el docker-compose.yml para jboss, usando Traefik como Proxy Reverso, especificando los dos frontends.
version: "3.3"
services:
micontenedor:
image: "tutum/jboss:as7"
container_name: dmz
labels:
- "traefik.enable=true"
- "traefik.http.routers.dmz-mgmt.rule=Host(`dmz`) && PathPrefix(`/console`) || PathPrefix(`/management`)"
- "traefik.http.routers.dmz-mgmt.entrypoints=web"
- "traefik.http.services.dmz-mgmt.loadbalancer.server.port=9990"
- "traefik.http.routers.dmz-mgmt.service=dmz-mgmt"
#frontend
- "traefik.http.routers.web.rule=Host(`dmz`)"
- "traefik.http.routers.web.entrypoints=web"
- "traefik.http.services.web.loadbalancer.server.port=8080"
- "traefik.http.routers.web.service=web"
¿Te sirvió? ¿Algún comentario? no dudes en dejarla en la caja más abajo.
Imágen portada: Unplash