Servicio de caché de Redis para Docker
Aprendemos a utilizar el servidor de caché Redis, utilizando la tecnología de contenedores con Docker.
Últimamente hemos mostrado con varios ejemplos el despliegue de contenedores, muestra de ellos son las entradas sobre Jenkins y Nextcloud. En ambos casos habilitamos el acceso a las aplicaciones a través de un proxy inverso con Nginx y habilitamos la conexión HTTPS utilizando los certificados ofrecidos por Let’s Encrypt.
Para rizar el rizo, como se suele decir, vamos a añadir el servicio de caché con Redis. De hecho en el servicio de nube privada Nextcloud, se recomienda utilizarlo, para mejorar la performance.
No es la primera vez que hablamos de este producto en la web, vimos su instalación en un servidor con Centos 7
Montar un contenedor con Redis
Actualmente la mayoría de servicios, ya sean de base de datos, de servidores web, de inventario, monitoreo y prácticamente de cualquier cosa que nos podamos imaginar, se pueden conterizar.
Redis tiene una imagen oficial para Docker, que podemos obtener desde esta página web.
Para desplegar uno, la forma básica es la siguiente:
docker run --name some-redis -d redis
Y si queremos que guarde la información almacenada en la caché, ubicado por defecto en el punto de montaje /data de forma permanente, lo haríamos de la siguiente manera:
docker run --name some-redis -v docker-data:/data -d redis redis-server --appendonly yes
Servicio de caché de Redis para Nextcloud
Para que Nextcloud la utilice, debemos modificar el fichero de docker-compose.yml, para añadir un par de variables de entorno, en el apartado del propio contenedor de la APP. Estas son REDIS_HOST
y REDIS_HOST_PORT
, veamos un ejemplo:
app:
(...)
environment:
- REDIS_HOST:redis
La variable de entorno REDIS_HOST_PORT
solo es necesaria si nos conectamos a una instancia externa.
Quedando así el fichero de docker-compose.yml, añadiendo la parte de Redis:
redis:
image: redis
restart: always
De esta forma ya sería suficiente para que tengamos en funcionamiento el servidor de caché y así utilizarlo en nuestra nube privada.
Para comprobar que esto era así, he añadido el comando «–appendonly yes», para que el registro de los datos «cacheados» sean permanentes, y así verificar que el servidor esta haciendo su trabajo. Todo ello contra un nuevo volumen, que he llamado «redis-data»
volumes:
(...)
- redis-data:
redis:
image: redis
restart: alway
command: --appendonly yes
volumes:
- redis-data:/data
De esta forma podemos ver el registro de actividad, en mi caso:
tail -f /var/lib/docker/volumes/nextcloud_redis-data/_data/appendonly.aof
Y esto es todo. Espero que la información de esta entrada os pueda servir en algún momento.
Fuentes consultadas
Documentación de Nextcloud en Docker Hub
Documentación de Redis en Docker Hub