docs: mejora README

This commit is contained in:
Mauro Torrez 2020-09-07 19:24:17 -03:00
parent 17473f49bf
commit 9e36e7cdcc

View File

@ -1,9 +1,8 @@
# Router Traefik para entorno Docker local # Router Traefik para entorno Docker local
Traefik es un front-end que permite hacer _routing_ HTTP de los Traefik es un front-end que publica los servicios que tenemos
servicios que tenemos corriendo localmente en contenedores corriendo localmente en Docker. Según el dominio solicitado, Traefik
Docker. Según el dominio solicitado, Traefik determina a qué container determina a qué container pasar la petición.
pasar la petición.
## Ejemplo ## Ejemplo
@ -11,13 +10,11 @@ Supongamos que tenemos corriendo en la máquina de desarrollo los
contenedores: contenedores:
* `kimkelen` (servicio HTTP en puerto 80) * `kimkelen` (servicio HTTP en puerto 80)
* `peruvia` (servicio HTTP en puerto 8080)
* `wordpress` (servicio HTTP en puerto 80) * `wordpress` (servicio HTTP en puerto 80)
Traefik permite acceder a los contenedores locales en las direcciones Traefik permite acceder a los contenedores locales en las direcciones
* http://kimkelen.lndo.site (80) -> container kimkelen (80) * http://kimkelen.lndo.site (80) -> container kimkelen (80)
* http://peruvia.lndo.site (80) -> container peruvia (8080)
* http://wordpress.lndo.site (80) -> container wordpress (80) * http://wordpress.lndo.site (80) -> container wordpress (80)
Cualquier dominio `*.lndo.site` siempre apunta a localhost Cualquier dominio `*.lndo.site` siempre apunta a localhost
@ -25,10 +22,10 @@ Cualquier dominio `*.lndo.site` siempre apunta a localhost
## Uso ## Uso
Requerimiento: tener Docker y Docker Compose instalados. En **Requerimiento**: tener Docker y Docker Compose instalados. En
https://servicios.unl.edu.ar/gitlab/recursos/docker se encuentra una https://servicios.unl.edu.ar/gitlab/recursos/docker se encuentra una
receta Ansible para configurar estas herramientas en la PC de receta Ansible para configurar estas herramientas fácilmente en la PC
desarrollo. de desarrollo.
1. Clonar este repo: 1. Clonar este repo:
@ -40,13 +37,16 @@ desarrollo.
docker-compose up -d docker-compose up -d
3. Listo! Ahora puedo acceder a los containers locales en 3. Listo! Ahora puedo acceder a los containers locales en
http://NOMBRE-CONTAINER.lndo.site http://NOMBRE-SERVICIO.lndo.site
La selección de `NOMBRE_CONTAINER` sigue una serie de reglas. Para La selección de `NOMBRE-SERVICIO` sigue una serie de reglas. Para
encontrar la URL asignada a un container, ingresar a encontrar la URL asignada a un container, ingresar a
http://traefik.lndo.site y revisar el listado que aparece. http://traefik.lndo.site y revisar el listado que aparece.
## Gotchas ## Particularidades
A la hora de configurar un nuevo servicio hay que tener en cuenta las
siguientes particularidades.
### Conexión a la red de Traefik ### Conexión a la red de Traefik
@ -79,10 +79,17 @@ routear el tráfico interno.
### Puerto a publicar ### Puerto a publicar
Traefik usa el primer puerto expuesto por el contenedor. De ser Traefik usa el primer puerto expuesto por el contenedor (la primera
necesario, se puede setear en dicho contenedor la _label_ instrucción EXPOSE dentro del Dockerfile). De ser necesario, se puede
`traefik.http.services.CONTAINER.loadbalancer.server.port=PUERTO"` personalizar este valor configurando el servicio de la siguiente
para cambiar este comportamiento. manera:
services:
app:
image: ...
# ...
labels:
traefik.http.services.CONTAINER.loadbalancer.server.port=PUERTO
* `CONTAINER` es un nombre único para el servicio del contenedor, se * `CONTAINER` es un nombre único para el servicio del contenedor, se
recomienda usar el mismo nombre que el container. recomienda usar el mismo nombre que el container.
@ -90,9 +97,9 @@ para cambiar este comportamiento.
* `PUERTO` es el puerto en el que el contenedor escucha peticiones * `PUERTO` es el puerto en el que el contenedor escucha peticiones
HTTP. HTTP.
### Cambiar dominio de un container ### Dominio de un container
Para cambiar el dominio donde atiende un servicio, editar el servicio Para setear el dominio donde atiende un servicio, editar el servicio
correspondiente en `docker-compose.yml`: correspondiente en `docker-compose.yml`:
services: services:
@ -102,14 +109,14 @@ correspondiente en `docker-compose.yml`:
labels: labels:
traefik.http.routers.CONTAINER.rule=Host(`miservicio.lndo.tite`) traefik.http.routers.CONTAINER.rule=Host(`miservicio.lndo.tite`)
### Routear según dominio + path ### Path donde atiende un servicio
Si deseo que API1 atienda todas las peticiones `/api/v1/` y WEBAPP Si quiero que mi aplicación atienda en un path diferente de / debo
atienda en cualquier otro path, ambas para un mismo dominio agregar la opción PathPrefix a la regla de ruteo:
`miservicio.lndo.site`, setear en API1 la _label_:
traefik.http.routers.API1.rule=Host(`miservicio.lndo.site`) && PathPrefix(`/api/v2`) services:
app:
y en WEBAPP: image: ...
# ...
traefik.http.routers.API1.rule=Host(`miservicio.lndo.site`) labels:
traefik.http.routers.CONTAINER.rule=Host(`miservicio.lndo.tite`) && PathPrefix(`/path/app`)