docs: mejora formato README

This commit is contained in:
Mauro Torrez 2020-09-07 17:45:11 -03:00
parent 44c509548d
commit 17473f49bf

108
README.md
View File

@ -25,23 +25,22 @@ Cualquier dominio `*.lndo.site` siempre apunta a localhost
## Uso ## Uso
Requerimiento: tener Docker Compose instalado. 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.
1. Clonar este repo: 1. Clonar este repo:
```shell git clone https://servicios.unl.edu.ar/gitlab/recursos/traefik.git
git clone https://servicios.unl.edu.ar/gitlab/recursos/traefik.git
```
1. Ejecutar Traefik: 2. Ejecutar Traefik:
```shell cd traefik
cd traefik 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-CONTAINER.lndo.site
La selección de `NOMBRE_CONTAINER` sigue una serie de reglas. Para La selección de `NOMBRE_CONTAINER` sigue una serie de reglas. Para
encontrar la URL asignada a un container, ingresar a encontrar la URL asignada a un container, ingresar a
@ -54,76 +53,63 @@ http://traefik.lndo.site y revisar el listado que aparece.
Los containers deben estar asociados a la red de Traefik para poder Los containers deben estar asociados a la red de Traefik para poder
routear el tráfico interno. routear el tráfico interno.
* En Docker Compose se debe marcar la red Traefik como externa, por * En Docker Compose se debe marcar la red Traefik como externa, por
ejemplo: ejemplo:
```yaml ---
--- services:
services: # servicio web de wordpress
# servicio web de wordpress wordpress:
wordpress: image: wordpress
image: wordpress # ... etc ...
# ... etc ... networks:
networks: - traefik
- traefik - app
- app
mysql: mysql:
image: mysql image: mysql
# ... etc ... # ... etc ...
networks: networks:
- app - app
networks: networks:
traefik: traefik:
external: true external: true
app: app:
```
### Puerto a publicar ### Puerto a publicar
Traefik usa el primer puerto expuesto por el contenedor. De Traefik usa el primer puerto expuesto por el contenedor. De ser
ser necesario se puede setear en dicho contenedor la _label_ necesario, se puede setear en dicho contenedor la _label_
`traefik.http.services.CONTAINER.loadbalancer.server.port=PUERTO"` `traefik.http.services.CONTAINER.loadbalancer.server.port=PUERTO"`
para cambiar este comportamiento. para cambiar este comportamiento.
* `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.
* `PUERTO` es el puerto en el que el contenedor escucha peticiones * `PUERTO` es el puerto en el que el contenedor escucha peticiones
HTTP. HTTP.
### Dominio no estándar para un container ### Cambiar dominio de un container
Obviamente el dominio que estamos configurando debe resolverse vía DNS Para cambiar el dominio donde atiende un servicio, editar el servicio
al host que ejecuta Traefik. correspondiente en `docker-compose.yml`:
#### En docker-compose.yml services:
app:
Agregar al servicio correspondiente en docker-compose.yml: image: ...
# ...
``` labels:
# ... traefik.http.routers.CONTAINER.rule=Host(`miservicio.lndo.tite`)
labels:
traefik.http.routers.CONTAINER.rule=Host(`MIDOMINIO.COM`)
# ...
```
### Routear según dominio + path ### Routear según dominio + path
Si deseo que API1 atienda todas las peticiones `/api/v1/` y WEBAPP Si deseo que API1 atienda todas las peticiones `/api/v1/` y WEBAPP
atienda en cualquier otro path, ambas para un mismo dominio atienda en cualquier otro path, ambas para un mismo dominio
MIDOMINIO.COM, setear en API1 la _label_: `miservicio.lndo.site`, setear en API1 la _label_:
``` traefik.http.routers.API1.rule=Host(`miservicio.lndo.site`) && PathPrefix(`/api/v2`)
'traefik.http.routers.API1.rule=Host(`MIDOMINIO.COM`) && PathPrefix(`/api/v2`)'
```
y en WEBAPP: y en WEBAPP:
``` traefik.http.routers.API1.rule=Host(`miservicio.lndo.site`)
'traefik.http.routers.API1.rule=Host(`MIDOMINIO.COM`)'
```
Recordar usar comillas simple (`'`) en la opción `--label` si se
ejecuta vía CLI.