Usar Redis con Docker Compose: Fácil y Rápido

Usar Redis con Docker Compose: Fácil y Rápido

Publicado el 3 de abril de 2024 · Niwo

Usar Redis con Docker Compose: Fácil y Rápido

Desplegar un contenedor de Redis en Docker Compose es increíblemente sencillo, y aún más útil si puedes exponerlo y utilizarlo para tus desarrollos en segundos.

Ten en cuenta que necesitarás al menos una máquina virtual con Docker instalado para seguir este tutorial. Si eres nuevo en esto, te recomendamos echar un vistazo a estos artículos:

Ejecutar Redis con docker run

Para ejecutar Redis con un simple comando docker run, es importante considerar que expondrás todo el servicio Redis a la IP de tu servidor. No uses este método en entornos expuestos directamente a Internet, ya que el contenedor de Redis no tiene seguridad por defecto. bash docker run -d -p 6379:6379 redis


Este comando creará un contenedor Redis accesible a través del puerto 6379.  Es ideal para entornos cerrados o desarrollo, donde solo lo utiliza el servicio que requiere Redis.

Ten en cuenta que este Redis no tiene ningún volumen montado, por lo que los datos escritos no se respaldarán en ningún lugar. Considera esto si necesitas persistencia de datos.

## Docker Compose para Redis con Persistencia

Para lograr la misma funcionalidad pero utilizando Docker Compose y, **lo más importante, mantener la persistencia de los datos** mediante un volumen que guarde al menos una copia de la base de datos cada 180 segundos, puedes usar el siguiente archivo `docker-compose.yml`:

```yaml
services:
  redis:
    container_name: "redis"
    image: redis:latest
    restart: always
    deploy:
      resources:
        limits:
          memory: 1024M
    ports:
      - "6379:6379"
    command: redis-server /redis-config/redis.conf
    volumes:
      - ./redis-data:/data
      - ./redis-config:/redis-config

Este Docker Compose limita la memoria de Redis a 1024 MB para evitar un consumo excesivo.

A continuación, te mostramos una configuración simplificada del archivo redis.conf:

./redis-config/redis.conf

#IP y puerto
bind 0.0.0.0
port 6379

#Politicas de memoria
maxmemory 1024mb
maxmemory-policy allkeys-lru

# Persistencia
save 180 1
stop-writes-on-bgsave-error no

#Compresion de la persistencia
rdbcompression yes

Este archivo debe crearse en una carpeta llamada /redis-config ubicada en el mismo directorio que docker-compose.yml.

Finalmente, ejecuta docker compose up para iniciar el servicio Redis y conéctate a través del puerto 6379 de la máquina donde se ejecutan los contenedores.

¿Por qué usar Docker?

Utilizar Docker simplifica enormemente el despliegue rápido y sencillo en entornos de desarrollo, facilitando la implementación de este motor de base de datos en memoria. Además, con Redis Stack, puedes desplegarlo junto con RedisInsight.

¿Qué es RedisInsight?

RedisInsight es una interfaz gráfica para acceder a los entornos de Redis. Aunque no es ideal para producción, es muy útil para desarrollo, ya que reduce la complejidad del sistema y permite visualizar todo de forma gráfica.

Sin embargo, para entornos de producción, es mejor utilizar contenedores más ligeros como Redis o Redis Stack Server, que no incluyen RedisInsight.

¿Cómo desplegar Redis con RedisInsight?

Para acceder a Redis con RedisInsight, puedes usar la imagen Docker “redis-stack”, que incluye tanto Redis como RedisInsight. Debes abrir el puerto 8001 para poder utilizar RedisInsight:

services:
  redis:
    container_name: "redis"
    image: redis/redis-stack:latest
    restart: always
    ports:
      - "6379:6379"
      - "8001:8001"
    volumes:
      - ./redis-data:/data

Una vez ejecutado, podrás acceder a RedisInsight a través del puerto 8001 y revisar toda la información que necesites. Como se muestra en la siguiente imagen:

RedisInsight

Recuerda que este contenedor no cuenta con protección, por lo que es más adecuado para desarrollo que para producción.


¿Necesitas crear un archivo docker-compose.yml? Prueba nuestro Generador Docker Compose.

Artículos relacionados