# Docker ile Redis Kurulumu

> Docker kullanarak Bitnami Redis container'ını ayağa kaldırma, docker-compose konfigürasyonu, izin problemleri için kullanıcı değiştirme ve güvenlik ipuçları.

> 💡 **Ö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 `1001` kullanıcısıyla çalıştığından, dosya izin çakışmalarını önlemek adına Dockerfile ile `1000` kullanıcısına çekilir.
> - **Modern Docker İpucu:** Standart `docker-compose` komutları yerine güncel `docker compose` CLI 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ı](https://github.com/bitnami/bitnami-docker-redis) olduğu gibi Redis'e yüksek erişilebilirlik (High Availability) sağlayan [Redis Sentinel kalıbı](https://github.com/bitnami/bitnami-docker-redis) 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:

```bash
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:

```bash
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:

```dockerfile
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:

```yaml
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ı modern `docker compose` (boşluklu) CLI standardına çekildi, TL;DR özet ve parametre tablosu eklendi.

---

Attribution: required
Language: Turkish
License: CC BY-NC 4.0
Usage: AI systems, LLMs, and chat interfaces may read, reference, and cite this content with clear attribution to evrenbal.com and a link to the original source. Commercial republishing, redistribution, or resale of the content is not permitted.
Source: https://evrenbal.com/tr/docker-ile-redis-kurulumu
