From 17473f49bf9c177ac291a1aa6d5940e6866ce0ae Mon Sep 17 00:00:00 2001 From: Mauro Torrez Date: Mon, 7 Sep 2020 17:45:11 -0300 Subject: [PATCH] docs: mejora formato README --- README.md | 108 ++++++++++++++++++++++++------------------------------ 1 file changed, 47 insertions(+), 61 deletions(-) diff --git a/README.md b/README.md index fa5023f..add07cb 100644 --- a/README.md +++ b/README.md @@ -25,23 +25,22 @@ Cualquier dominio `*.lndo.site` siempre apunta a localhost ## 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 - docker-compose up -d - ``` + 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-CONTAINER.lndo.site La selección de `NOMBRE_CONTAINER` sigue una serie de reglas. Para 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 routear el tráfico interno. -* En Docker Compose se debe marcar la red Traefik como externa, por - ejemplo: + * En Docker Compose se debe marcar la red Traefik como externa, por + ejemplo: - ```yaml - --- - services: - # servicio web de wordpress - wordpress: - image: wordpress - # ... etc ... - networks: - - traefik - - app + --- + services: + # servicio web de wordpress + wordpress: + image: wordpress + # ... etc ... + networks: + - traefik + - app - mysql: - image: mysql - # ... etc ... - networks: - - app + mysql: + image: mysql + # ... etc ... + networks: + - app - networks: - traefik: - external: true - app: - ``` + networks: + traefik: + external: true + app: ### Puerto a publicar -Traefik usa el primer puerto expuesto por el contenedor. De -ser necesario se puede setear en dicho contenedor la _label_ +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. - * `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. - * `PUERTO` es el puerto en el que el contenedor escucha peticiones + * `PUERTO` es el puerto en el que el contenedor escucha peticiones HTTP. -### Dominio no estándar para un container +### Cambiar dominio de un container -Obviamente el dominio que estamos configurando debe resolverse vía DNS -al host que ejecuta Traefik. +Para cambiar el dominio donde atiende un servicio, editar el servicio +correspondiente en `docker-compose.yml`: -#### En docker-compose.yml - -Agregar al servicio correspondiente en docker-compose.yml: - -``` -# ... - labels: - traefik.http.routers.CONTAINER.rule=Host(`MIDOMINIO.COM`) -# ... -``` + services: + app: + image: ... + # ... + labels: + traefik.http.routers.CONTAINER.rule=Host(`miservicio.lndo.tite`) ### Routear según dominio + path Si deseo que API1 atienda todas las peticiones `/api/v1/` y WEBAPP 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(`MIDOMINIO.COM`) && PathPrefix(`/api/v2`)' -``` + traefik.http.routers.API1.rule=Host(`miservicio.lndo.site`) && PathPrefix(`/api/v2`) y en WEBAPP: -``` -'traefik.http.routers.API1.rule=Host(`MIDOMINIO.COM`)' -``` - -Recordar usar comillas simple (`'`) en la opción `--label` si se -ejecuta vía CLI. + traefik.http.routers.API1.rule=Host(`miservicio.lndo.site`)