docs: mejora README
This commit is contained in:
parent
17473f49bf
commit
9e36e7cdcc
61
README.md
61
README.md
@ -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`)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user