Docker ile Redis Kurulumu

Sayfayı kopyala
💡 Özet (TL;DR):
- Amaç: Docker kullanarak Bitnami Redis imajı üzerinde güvenli ve özelleştirilmiş (kullanıcı ID uyumlu) bir Redis veritabanı ayağa kaldırmak.
- Önemli Adım: Container varsayılan olarak
1001kullanıcısıyla çalıştığından, dosya izin çakışmalarını önlemek adına Dockerfile ile1000kullanıcısına çekilir.- Modern Docker İpucu: Standart
docker-composekomutları yerine günceldocker composeCLI eklentisi kullanımı ve modern Compose (version: '3.8') şablonu önerilmektedir.
Şu anda Full-Stack proje kapsamında API iskeletini oluşturuyorum. Çeşitli servisler için sağlayıcılar yazdıktan sonra (bu konuya ayrıca değineceğim) sıra Redis sağlayıcısını yazmaya geldi.
Web sunucusu ve PHP kurulumu yaparken PHP Redis eklentisini kurmuştum. PHP Redis eklentisi, PHP'nin Redis'e bağlanabilmesini sağlayan istemcidir. Fakat sorun şu ki mevcut sunucumda bir Redis yok. Bu nedenle önce Redis kurmalıyız.
Redis veya Redis Sentinel
Ben Redis için Bitnami kalıbını kullanacağım. Bitnami'nin Redis kalıbı olduğu gibi Redis'e yüksek erişilebilirlik (High Availability) sağlayan Redis Sentinel kalıbı da mevcut. Ben abartmadan Redis ile başlayacağım. İsterseniz siz Redis Sentinel üzerinden devam edip sağlayıcınızı (provider) şimdiden ona uygun yazabilirsiniz.
Varsayılan ayarlarda hızlıca bir test yapmak isterseniz aşağıdaki komutla Redis'i ayağa kaldırabilirsiniz:
docker run --name redis -e ALLOW_EMPTY_PASSWORD=yes bitnami/redis:latest
Dilerseniz aşağıdaki komutla varsayılan docker-compose.yml dosyasını indirip isteğinize göre düzenleyebilir ve Redis'i bu dosyayı baz alarak ayağa kaldırabilirsiniz:
curl -sSL https://raw.githubusercontent.com/bitnami/bitnami-docker-redis/master/docker-compose.yml > docker-compose.yml
docker compose up -d
Redis Docker Konteynerinin Kullanıcısını Değiştirmek
Bitnami'nin konteyneri varsayılan olarak 1001 ID'li kullanıcı ile çalışıyor. Ben diğer konteynerlerimde 1000 kullanıcısını kullandığım için dosya yetki çakışmalarını önlemek adına bu kalıbı da ona göre uyarladım.
Öncelikle aşağıdaki içeriğe sahip Dockerfile dosyasını oluşturun:
FROM bitnami/redis:latest
LABEL maintainer "Bitnami containers@bitnami.com"
# Varsayılan konteyner kullanıcısını değiştir
USER 1000
Akabinde projenizin dizininde aşağıdakine benzer bir docker-compose.yml dosyası oluşturun:
version: '3.8'
services:
redis:
build: .
environment:
- ALLOW_EMPTY_PASSWORD=no
- REDIS_PASSWORD=kullanmak_istediginiz_guvenli_sifre
- REDIS_DISABLE_COMMANDS=FLUSHDB,FLUSHALL
ports:
- 6379:6379
volumes:
# Sunucuda veya lokalde redis verisinin kalıcı olarak tutulacağı dizin
- ./data:/bitnami/redis/data
Ve son olarak docker compose up -d komutu ile Redis'imizi ayağa kaldıralım. Docker'ın en sevdiğim tarafı da işleri bu kadar kolay hale getiriyor olması.
Redis Docker-Compose Parametreleri ve Anlamları
| Parametre / Çevre Değişkeni | Varsayılan / Önerilen | Açıklama |
|---|---|---|
ALLOW_EMPTY_PASSWORD | no | Boş şifre ile bağlantıya izin verilip verilmeyeceği (güvenlik için no olmalıdır). |
REDIS_PASSWORD | <güvenli_şifre> | Redis sunucusuna erişmek için kullanılacak şifre. |
REDIS_DISABLE_COMMANDS | FLUSHDB,FLUSHALL | Güvenlik amacıyla devredışı bırakılan kritik Redis komutları. |
ports | 6379:6379 | Ana makine ile konteyner arasındaki port eşleştirmesi. |
volumes | ./data:/bitnami/redis/data | Verilerin konteyner kapandığında kaybolmaması için kalıcı (persistent) depolama. |
Bu Yazıda Yapılan Değişiklikler
- 11.05.2022: Yazı özeti düzenlendi.
- 21.06.2026: Dockerfile açıklama satırı hatası ve geçersiz YAML girintileri düzeltildi,
docker-compose(tireli) kullanımları moderndocker compose(boşluklu) CLI standardına çekildi, TL;DR özet ve parametre tablosu eklendi.
