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:

  1. 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:

  1. 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:

  1. app:
  2.    (...)
  3. environment:
  4.    - 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:

  1. redis:
  2.    image: redis
  3.    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»

  1. volumes:
  2.     (...)
  3.     - redis-data:
  4. redis:
  5.     image: redis
  6.     restart: alway
  7.     command: --appendonly yes
  8.     volumes:
  9.        - redis-data:/data

De esta forma podemos ver el registro de actividad, en mi caso:

  1. 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