docs: mejora README
This commit is contained in:
parent
17473f49bf
commit
9e36e7cdcc
75
README.md
75
README.md
@ -1,52 +1,52 @@
|
||||
# Router Traefik para entorno Docker local
|
||||
|
||||
Traefik es un front-end que permite hacer _routing_ HTTP de los
|
||||
servicios que tenemos corriendo localmente en contenedores
|
||||
Docker. Según el dominio solicitado, Traefik determina a qué container
|
||||
pasar la petición.
|
||||
Traefik es un front-end que publica los servicios que tenemos
|
||||
corriendo localmente en Docker. Según el dominio solicitado, Traefik
|
||||
determina a qué container pasar la petición.
|
||||
|
||||
## Ejemplo
|
||||
|
||||
Supongamos que tenemos corriendo en la máquina de desarrollo los
|
||||
contenedores:
|
||||
|
||||
* `kimkelen` (servicio HTTP en puerto 80)
|
||||
* `peruvia` (servicio HTTP en puerto 8080)
|
||||
* `wordpress` (servicio HTTP en puerto 80)
|
||||
* `kimkelen` (servicio HTTP en puerto 80)
|
||||
* `wordpress` (servicio HTTP en puerto 80)
|
||||
|
||||
Traefik permite acceder a los contenedores locales en las direcciones
|
||||
|
||||
* 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://kimkelen.lndo.site (80) -> container kimkelen (80)
|
||||
* http://wordpress.lndo.site (80) -> container wordpress (80)
|
||||
|
||||
Cualquier dominio `*.lndo.site` siempre apunta a localhost
|
||||
(127.0.0.1), por lo que no hay que configurar nada en `/etc/hosts`.
|
||||
|
||||
## 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
|
||||
receta Ansible para configurar estas herramientas en la PC de
|
||||
desarrollo.
|
||||
receta Ansible para configurar estas herramientas fácilmente en la PC
|
||||
de desarrollo.
|
||||
|
||||
1. Clonar este repo:
|
||||
1. Clonar este repo:
|
||||
|
||||
git clone https://servicios.unl.edu.ar/gitlab/recursos/traefik.git
|
||||
|
||||
2. Ejecutar Traefik:
|
||||
2. Ejecutar Traefik:
|
||||
|
||||
cd traefik
|
||||
docker-compose up -d
|
||||
|
||||
3. Listo! Ahora puedo acceder a los containers locales en
|
||||
http://NOMBRE-CONTAINER.lndo.site
|
||||
3. Listo! Ahora puedo acceder a los containers locales en
|
||||
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
|
||||
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
|
||||
|
||||
@ -79,10 +79,17 @@ routear el tráfico interno.
|
||||
|
||||
### Puerto a publicar
|
||||
|
||||
Traefik usa el primer puerto expuesto por el contenedor. De ser
|
||||
necesario, se puede setear en dicho contenedor la _label_
|
||||
`traefik.http.services.CONTAINER.loadbalancer.server.port=PUERTO"`
|
||||
para cambiar este comportamiento.
|
||||
Traefik usa el primer puerto expuesto por el contenedor (la primera
|
||||
instrucción EXPOSE dentro del Dockerfile). De ser necesario, se puede
|
||||
personalizar este valor configurando el servicio de la siguiente
|
||||
manera:
|
||||
|
||||
services:
|
||||
app:
|
||||
image: ...
|
||||
# ...
|
||||
labels:
|
||||
traefik.http.services.CONTAINER.loadbalancer.server.port=PUERTO
|
||||
|
||||
* `CONTAINER` es un nombre único para el servicio del contenedor, se
|
||||
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
|
||||
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`:
|
||||
|
||||
services:
|
||||
@ -102,14 +109,14 @@ correspondiente en `docker-compose.yml`:
|
||||
labels:
|
||||
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
|
||||
atienda en cualquier otro path, ambas para un mismo dominio
|
||||
`miservicio.lndo.site`, setear en API1 la _label_:
|
||||
Si quiero que mi aplicación atienda en un path diferente de / debo
|
||||
agregar la opción PathPrefix a la regla de ruteo:
|
||||
|
||||
traefik.http.routers.API1.rule=Host(`miservicio.lndo.site`) && PathPrefix(`/api/v2`)
|
||||
|
||||
y en WEBAPP:
|
||||
|
||||
traefik.http.routers.API1.rule=Host(`miservicio.lndo.site`)
|
||||
services:
|
||||
app:
|
||||
image: ...
|
||||
# ...
|
||||
labels:
|
||||
traefik.http.routers.CONTAINER.rule=Host(`miservicio.lndo.tite`) && PathPrefix(`/path/app`)
|
||||
|
Loading…
x
Reference in New Issue
Block a user