Docker для Redis: установка и настройка Redis в контейнере - Компьюти
Logo КОМПЬЮТИ

Docker для Redis: установка и настройка Redis в контейнере

Время на прочтение: 2 мин.

Redis часто используется в веб-приложениях как кэш, хранилище сессий, брокер сообщений или быстрое key-value-хранилище.

Docker позволяет запустить Redis без установки сервера непосредственно в операционную систему.

Быстрый запуск Redis

docker run -d \
  --name redis \
  redis:alpine

Проверить:

docker ps

Подключиться:

docker exec -it redis redis-cli

Проверить Redis:

PING

Ответ:

PONG

Redis через Compose

Пример:

services:
  redis:
    image: redis:alpine
    restart: unless-stopped

Запуск:

docker compose up -d

Подключение приложения

Допустим, есть:

services:
  app:
    image: my-app

  redis:
    image: redis:alpine

Приложение обращается к Redis:

redis:6379

Имя redis — имя Compose-сервиса.

Подробнее — в статье «Docker networks».

Redis как cache

Если Redis используется только как кэш, его потеря может быть допустимой.

Например:

Application
     |
   Redis
     |
    Cache

После перезапуска приложение просто наполнит кэш заново.

В таком сценарии требования к persistence могут быть минимальными.

Redis как хранилище данных

Если Redis содержит критичные данные, ситуация меняется.

Необходимо продумать:

  • persistence;
  • backup;
  • восстановление;
  • репликацию;
  • мониторинг;
  • ограничения памяти.

Volume для Redis

Например:

services:
  redis:
    image: redis:alpine
    volumes:
      - redis-data:/data

volumes:
  redis-data:

Но volume имеет смысл только при включенной и корректно настроенной persistence.

Backup Redis

Стратегия backup зависит от того, какие механизмы сохранения используются и насколько критичны данные.

Нельзя считать:

docker volume

автоматическим backup.

Подробнее — в статье «Docker backup».

Redis и пароль

Если Redis доступен только во внутренней Docker-сети, его не следует без необходимости публиковать наружу.

Не рекомендуется делать:

ports:
  - "6379:6379"

на production-сервере без ограничений доступа.

Redis и restart policy

restart: unless-stopped

может использоваться для автоматического восстановления сервиса.

Но restart policy не заменяет persistence или backup.

Подробнее — в статье «Docker restart policy».

Healthcheck

Можно добавить:

services:
  redis:
    image: redis:alpine
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      interval: 10s
      timeout: 5s
      retries: 5

Теперь инфраструктура может проверять доступность Redis.

Redis для WordPress

Redis часто используется для объектного кэширования WordPress.

В Docker-среде WordPress может обращаться к Redis по имени:

redis

Такой Redis не обязательно должен быть доступен из интернета.

Подробнее — в статье «Docker для WordPress».

Redis и логи

Посмотреть:

docker logs redis

Или:

docker compose logs -f redis

Подробнее — в статье «Docker logs».

Типичные ошибки

Redis опубликован наружу

Это потенциальная проблема безопасности.

Нет понимания роли Redis

Cache и primary datastore требуют разных подходов.

Нет ограничения памяти

Redis работает в памяти, поэтому важно учитывать доступный RAM.

Нет persistence при необходимости

Если данные важны, необходимо заранее определить способ восстановления.

Итог

Redis отлично подходит для контейнеризации и хорошо сочетается с Docker Compose.

Типовой стек:

Nginx
  |
Application
 / \
Redis PostgreSQL

Redis отвечает за быстрый доступ к данным, кэш или очереди, а PostgreSQL — за долговременное хранение основной информации.

Читайте также:


Читайте также:

Приглашаем поучаствовать в обсуждении статьи:

Комментариев 0