Saltar al contenido

Cómo usar Traefik v2 como proxy inverso para contenedores Docker en Ubuntu 20.04

Guarde el archivo y salga del editor.

Con estas configuraciones en su lugar, ahora iniciará Traefik

Paso 2: ejecución del contenedor Traefik

En este paso, creará una red Docker para que el proxy la comparta con los contenedores. Luego accederá al panel de Traefik. La red Docker es necesaria para que pueda usarla con aplicaciones que se ejecutan con Docker Compose.

Cree una nueva red Docker llamada web:

 $ docker network create web

Cuando se inicie el contenedor Traefik, lo agregará a esta red. Luego, puede agregar contenedores adicionales a esta red más adelante para que Traefik los utilice como proxy.

A continuación, cree un archivo vacío que contendrá su información de Let’s Encrypt. Compartirá esto en el contenedor para que Traefik pueda usarlo:

 $ touch acme.json

Traefik solo podrá utilizar este archivo si el usuario root dentro del contenedor tiene acceso exclusivo de lectura y escritura. Para hacer esto, bloquee los permisos en acme.json para que solo el propietario del archivo tenga permiso de lectura y escritura.

 $ chmod 600 acme.json

Una vez que el archivo se pasa a Docker, el propietario cambiará automáticamente al usuario raíz dentro del contenedor.

Finalmente, cree el contenedor Traefik con este comando:

 $ docker run -d 
$ -v /var/run/docker.sock:/var/run/docker.sock 
$ -v $PWD/traefik.toml:/traefik.toml 
$ -v $PWD/traefik_dynamic.toml:/traefik_dynamic.toml 
$ -v $PWD/acme.json:/acme.json 
$ -p 80:80 
$ -p 443:443 
$ --network web 
$ --name traefik 
$ traefik:v2.2

Este comando es un poco largo. Vamos a analizarlo.

Utiliza el indicador -d para ejecutar el contenedor en segundo plano como un demonio. Luego, comparte su archivo docker.sock en el contenedor para que el proceso de Traefik pueda escuchar los cambios en los contenedores. También comparte los archivos de configuración traefik.toml y traefik_dynamic.toml en el contenedor, así como acme.json.

A continuación, asigna los puertos: 80 y: 443 de su host Docker a los mismos puertos en el contenedor Traefik para que Traefik reciba todo el tráfico HTTP y HTTPS al servidor.

Establece la red del contenedor en web y le asigna un nombre traefik.

Finalmente, usa la imagen traefik: v2.2 para este contenedor para que pueda garantizar que no está ejecutando una versión completamente diferente a la que está escrito este tutorial.

El ENTRYPOINT de una imagen de Docker es un comando que siempre se ejecuta cuando se crea un contenedor a partir de la imagen. En este caso, el comando es el binario traefik dentro del contenedor. Puede pasar argumentos adicionales a ese comando cuando inicia el contenedor, pero ha configurado todas sus configuraciones en el archivo traefik.toml.

Con el contenedor iniciado, ahora tiene un panel al que puede acceder para ver el estado de sus contenedores. También puede utilizar este panel para visualizar los enrutadores, servicios y middlewares que Traefik ha registrado. Puede intentar acceder al panel de control apuntando su navegador a https: //monitor.your_domain/dashboard/ (el final / es obligatorio).

Se le pedirá su nombre de usuario y contraseña, que son admin y la contraseña que configuró en el Paso 1.

Una vez que haya iniciado sesión, verá la interfaz de Traefik:

Panel de control de Traefik vacío

Notará que ya hay algunos enrutadores y servicios registrados, pero esos son los que vienen con Traefik y la configuración del enrutador que escribió para la API.

Ahora tiene su proxy Traefik en ejecución y lo ha configurado para trabajar con Docker y monitorear otros contenedores. En el siguiente paso, iniciará algunos contenedores para que Traefik los haga proxy.

Paso 3: registro de contenedores con Traefik
Con el contenedor Traefik en ejecución, está listo para ejecutar aplicaciones detrás de él. Lancemos los siguientes contenedores detrás de Traefik:

Un blog con la imagen oficial de WordPress.
Un servidor de gestión de bases de datos que utiliza la imagen oficial del administrador.
Administrará ambas aplicaciones con Docker Compose mediante un archivo docker-compose.yml.

Cree y abra el archivo docker-compose.yml en su editor:

 $ nano docker-compose.yml

Agregue las siguientes líneas al archivo para especificar la versión y las redes que usará:

docker-compose.yml