Подключение Redis в Docker Compose
Назовите свой проект
- Версия внешнего сервиса должна совпадать с версией, указанной в файле
docker-compose.yml. - В качестве примера в этой инструкции используется проект с именем
testit. Вы можете использовать другое название.
При настройке внешней базы данных Redis установите следующий параметр:
appendonly yesВ файле
docker-compose.ymlзакомментируйте или удалите секцию с сервисом БД (auth_cache), который будет заменен на внешний сервис, зависимости от него других контейнеров (все упоминания сервиса БД в блокахdepends_on), и его вольюм (auth-cache-volume) в спискеvolumesв файлеdocker-compose.yml.В
.env-файле укажите данные для подключения к внешней БД, гдеexternal-server— IP или DNS-имя хоста, на котором установлен Redis (без указания протокола и порта).AUTH_CACHE_CONNECTION_STRING=external-serverПерезапустите систему Test IT:
docker compose -f docker-compose.yml --project-name testit up --detach --timeout 120 --remove-orphans
Включение аутентификации в Redis
Добавьте пароль в базу данных Redis.
auth-cache: <...> command: > redis-server --appendonly yes --requirepass "${REDIS_PASSWORD}"Раскомментируйте в файле
.envследующую строку:REDIS_PASSWORD=<YOUR_PASSWORD>Отредактируйте в файле
.envстрокуAUTH_CACHE_CONNECTION_STRING, добавив в нееpassword=<YOUR_PASSWORD>, например:AUTH_CACHE_CONNECTION_STRING=auth-cache:6379,password=<YOUR_PASSWORD>
Настройка безопасного соединения
Подготовьте файлы сертификатов — корневой
ca.crt, а также подписанные с помощью него сертификат и ключ сервераserver.crtиserver.key. CN сертификата сервера должен бытьauth-cache. Названия сертификатов и ключа могут быть любыми.Настройте права пользователя
redis (999)в файлеserver.key:chown 999 server.key chgrp 999 server.key chmod 600 server.keyСкопируйте файлы
server.crtиserver.keyдляauth-cacheв вольюм:server_certs=$(docker inspect testit_auth-cache-tls-volume --format '{{ .Mountpoint }}') cp server.crt ${server_certs}/ cp server.key ${server_certs}/Скопируйте файл сертификата CA, с помощью которого были выписаны сертификаты серверов, в вольюм
trusted-certificates-volume:trusted_certs=$(docker inspect testit_trusted-certificates-volume --format '{{ .Mountpoint }}') cp ca.crt ${trusted_certs}/В файл
docker-compose.yml:Добавьте в секции
auth-cacheпод секциейcommandследующие строки:auth-cache: <...> command: > <...> --tls-port 6379 --port 0 --tls-cert-file "${REDIS_TLS_CERT_FILE}" --tls-key-file "${REDIS_TLS_KEY_FILE}" --tls-auth-clients noВ файле
.envотредактируйте строкуAUTH_CACHE_CONNECTION_STRING, добавивssl=true:AUTH_CACHE_CONNECTION_STRING=auth-cache:6379,password=<YOUR_PASSWORD>,ssl=trueРаскомментируйте следующие строки и отредактируйте при необходимости:
REDIS_TLS_CERT_FILE=/tls/server.crt REDIS_TLS_KEY_FILE=/tls/server.key