Jesper O. Christensen

Cloud Architect @ Brandheroes

Running Redis Sentinel with Docker

2019-12-19 jesper o. christensenDocker...

unsplash.com

So you wanna run a highly available version of Redis and you find Redis Sentinel. But you wanna test it out before you commit or just wanna get started in the easiest and cheapest (free) way possible.

Well using Docker you can have Redis Sentinel up an running in seconds!

Using the command line

So the easiest way is probably just to fire up redis and redis-sentinel in two seperate commands like this:

docker run --name redis -p 6379:6379 redis

docker run --name redis-sentinel -e REDIS_MASTER_HOST=localhost -p 26379:26379 bitnami/redis-sentinel:latest

But I like to make idempotent one-liners cause i will often be using them in relation to a package.json file or something where i fire off a short command to run a longer more complex command.

(docker rm redis --force || true) && (docker rm redis-sentinel --force || true) && docker run --name redis -p 6379:6379 -d redis && docker run --name redis-sentinel -e REDIS_MASTER_HOST=localhost -p 26379:26379 bitnami/redis-sentinel:latest

The nice thing about running it this way instead of with Compose, as we’ll be discussing next, is that you can run this command again and again with no issues. Where as you can not run docker-compose up if its already up. So if you want to restart your service for some reason, you will have to run docker-compose restart. Might not be a big issue, but if you have multiple projects that depend on Redis then you might want the command in each of those projects and having 1 command to run will most likely be preferred by your coworkers and newcommers to your project.

If you are using windows make sure you have the newest version of PowerShell(7+)

Using Compose

If you wanna use a docker-compose you can use this docker-compose.yml file below and run it with docker-compose up

version: '2'

services:
  redis-sentinel:
    image: bitnami/redis-sentinel:5.0
    volumes:
      - redis-sentinel_data:/bitnami
  redis:
    image: bitnami/redis:5.0
    environment:
      - ALLOW_EMPTY_PASSWORD=yes
    volumes:
      - redis_data:/bitnami
volumes:
  redis-sentinel_data:
    driver: local
  redis_data:
    driver: local

To restart use docker-compose restart and docker-compose down to take it back down.