[{"data":1,"prerenderedAt":689},["ShallowReactive",2],{"post-\u002Ftr\u002Fdocker-ile-redis-kurulumu":3},{"page":4,"translation":522,"nav":539,"related":666,"random":676},{"id":5,"title":6,"body":7,"categories":520,"category":522,"date":523,"description":524,"draft":525,"extension":526,"image":527,"kind":522,"lang":384,"meta":528,"navigation":263,"path":529,"readingTime":170,"seo":530,"slug":531,"stem":532,"tags":533,"translationKey":522,"type":521,"updated":537,"__hash__":538},"postsTr\u002Ftr\u002Fdocker-ile-redis-kurulumu.md","Docker ile Redis Kurulumu",{"type":8,"value":9,"toc":514},"minimark",[10,64,67,70,73,78,97,100,138,145,182,184,188,197,204,233,239,363,370,372,377,489,491,496,510],[11,12,13,21],"blockquote",{},[14,15,16,17],"p",{},"💡 ",[18,19,20],"strong",{},"Özet (TL;DR):",[22,23,24,31,46],"ul",{},[25,26,27,30],"li",{},[18,28,29],{},"Amaç:"," Docker kullanarak Bitnami Redis imajı üzerinde güvenli ve özelleştirilmiş (kullanıcı ID uyumlu) bir Redis veritabanı ayağa kaldırmak.",[25,32,33,36,37,41,42,45],{},[18,34,35],{},"Önemli Adım:"," Container varsayılan olarak ",[38,39,40],"code",{},"1001"," kullanıcısıyla çalıştığından, dosya izin çakışmalarını önlemek adına Dockerfile ile ",[38,43,44],{},"1000"," kullanıcısına çekilir.",[25,47,48,51,52,55,56,59,60,63],{},[18,49,50],{},"Modern Docker İpucu:"," Standart ",[38,53,54],{},"docker-compose"," komutları yerine güncel ",[38,57,58],{},"docker compose"," CLI eklentisi kullanımı ve modern Compose (",[38,61,62],{},"version: '3.8'",") şablonu önerilmektedir.",[14,65,66],{},"Ş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.",[14,68,69],{},"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.",[71,72],"hr",{},[74,75,77],"h2",{"id":76},"redis-veya-redis-sentinel","Redis veya Redis Sentinel",[14,79,80,81,91,92,96],{},"Ben Redis için Bitnami kalıbını kullanacağım. Bitnami'nin ",[82,83,90],"a",{"href":84,"rel":85,"target":89},"https:\u002F\u002Fgithub.com\u002Fbitnami\u002Fbitnami-docker-redis",[86,87,88],"nofollow","noopener","noreferrer","_blank","Redis kalıbı"," olduğu gibi Redis'e yüksek erişilebilirlik (High Availability) sağlayan ",[82,93,95],{"href":84,"rel":94,"target":89},[86,87,88],"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.",[14,98,99],{},"Varsayılan ayarlarda hızlıca bir test yapmak isterseniz aşağıdaki komutla Redis'i ayağa kaldırabilirsiniz:",[101,102,107],"pre",{"className":103,"code":104,"language":105,"meta":106,"style":106},"language-bash shiki shiki-themes github-light github-dark","docker run --name redis -e ALLOW_EMPTY_PASSWORD=yes bitnami\u002Fredis:latest\n","bash","",[38,108,109],{"__ignoreMap":106},[110,111,114,118,122,126,129,132,135],"span",{"class":112,"line":113},"line",1,[110,115,117],{"class":116},"sScJk","docker",[110,119,121],{"class":120},"sZZnC"," run",[110,123,125],{"class":124},"sj4cs"," --name",[110,127,128],{"class":120}," redis",[110,130,131],{"class":124}," -e",[110,133,134],{"class":120}," ALLOW_EMPTY_PASSWORD=yes",[110,136,137],{"class":120}," bitnami\u002Fredis:latest\n",[14,139,140,141,144],{},"Dilerseniz aşağıdaki komutla varsayılan ",[38,142,143],{},"docker-compose.yml"," dosyasını indirip isteğinize göre düzenleyebilir ve Redis'i bu dosyayı baz alarak ayağa kaldırabilirsiniz:",[101,146,148],{"className":103,"code":147,"language":105,"meta":106,"style":106},"curl -sSL https:\u002F\u002Fraw.githubusercontent.com\u002Fbitnami\u002Fbitnami-docker-redis\u002Fmaster\u002Fdocker-compose.yml > docker-compose.yml\ndocker compose up -d\n",[38,149,150,168],{"__ignoreMap":106},[110,151,152,155,158,161,165],{"class":112,"line":113},[110,153,154],{"class":116},"curl",[110,156,157],{"class":124}," -sSL",[110,159,160],{"class":120}," https:\u002F\u002Fraw.githubusercontent.com\u002Fbitnami\u002Fbitnami-docker-redis\u002Fmaster\u002Fdocker-compose.yml",[110,162,164],{"class":163},"szBVR"," >",[110,166,167],{"class":120}," docker-compose.yml\n",[110,169,171,173,176,179],{"class":112,"line":170},2,[110,172,117],{"class":116},[110,174,175],{"class":120}," compose",[110,177,178],{"class":120}," up",[110,180,181],{"class":124}," -d\n",[71,183],{},[74,185,187],{"id":186},"redis-docker-konteynerinin-kullanıcısını-değiştirmek","Redis Docker Konteynerinin Kullanıcısını Değiştirmek",[14,189,190,191,193,194,196],{},"Bitnami'nin konteyneri varsayılan olarak ",[38,192,40],{}," ID'li kullanıcı ile çalışıyor. Ben diğer konteynerlerimde ",[38,195,44],{}," 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.",[14,198,199,200,203],{},"Öncelikle aşağıdaki içeriğe sahip ",[38,201,202],{},"Dockerfile"," dosyasını oluşturun:",[101,205,209],{"className":206,"code":207,"language":208,"meta":106,"style":106},"language-dockerfile shiki shiki-themes github-light github-dark","FROM bitnami\u002Fredis:latest\nLABEL maintainer \"Bitnami containers@bitnami.com\"\n# Varsayılan konteyner kullanıcısını değiştir\nUSER 1000\n","dockerfile",[38,210,211,216,221,227],{"__ignoreMap":106},[110,212,213],{"class":112,"line":113},[110,214,215],{},"FROM bitnami\u002Fredis:latest\n",[110,217,218],{"class":112,"line":170},[110,219,220],{},"LABEL maintainer \"Bitnami containers@bitnami.com\"\n",[110,222,224],{"class":112,"line":223},3,[110,225,226],{},"# Varsayılan konteyner kullanıcısını değiştir\n",[110,228,230],{"class":112,"line":229},4,[110,231,232],{},"USER 1000\n",[14,234,235,236,238],{},"Akabinde projenizin dizininde aşağıdakine benzer bir ",[38,237,143],{}," dosyası oluşturun:",[101,240,244],{"className":241,"code":242,"language":243,"meta":106,"style":106},"language-yaml shiki shiki-themes github-light github-dark","version: '3.8'\n\nservices:\n  redis:\n    build: .\n    environment:\n      - ALLOW_EMPTY_PASSWORD=no\n      - REDIS_PASSWORD=kullanmak_istediginiz_guvenli_sifre\n      - REDIS_DISABLE_COMMANDS=FLUSHDB,FLUSHALL\n    ports:\n      - 6379:6379\n    volumes:\n      # Sunucuda veya lokalde redis verisinin kalıcı olarak tutulacağı dizin\n      - .\u002Fdata:\u002Fbitnami\u002Fredis\u002Fdata\n","yaml",[38,245,246,259,265,273,280,291,299,308,316,324,332,340,348,355],{"__ignoreMap":106},[110,247,248,252,256],{"class":112,"line":113},[110,249,251],{"class":250},"s9eBZ","version",[110,253,255],{"class":254},"sVt8B",": ",[110,257,258],{"class":120},"'3.8'\n",[110,260,261],{"class":112,"line":170},[110,262,264],{"emptyLinePlaceholder":263},true,"\n",[110,266,267,270],{"class":112,"line":223},[110,268,269],{"class":250},"services",[110,271,272],{"class":254},":\n",[110,274,275,278],{"class":112,"line":229},[110,276,277],{"class":250},"  redis",[110,279,272],{"class":254},[110,281,283,286,288],{"class":112,"line":282},5,[110,284,285],{"class":250},"    build",[110,287,255],{"class":254},[110,289,290],{"class":124},".\n",[110,292,294,297],{"class":112,"line":293},6,[110,295,296],{"class":250},"    environment",[110,298,272],{"class":254},[110,300,302,305],{"class":112,"line":301},7,[110,303,304],{"class":254},"      - ",[110,306,307],{"class":120},"ALLOW_EMPTY_PASSWORD=no\n",[110,309,311,313],{"class":112,"line":310},8,[110,312,304],{"class":254},[110,314,315],{"class":120},"REDIS_PASSWORD=kullanmak_istediginiz_guvenli_sifre\n",[110,317,319,321],{"class":112,"line":318},9,[110,320,304],{"class":254},[110,322,323],{"class":120},"REDIS_DISABLE_COMMANDS=FLUSHDB,FLUSHALL\n",[110,325,327,330],{"class":112,"line":326},10,[110,328,329],{"class":250},"    ports",[110,331,272],{"class":254},[110,333,335,337],{"class":112,"line":334},11,[110,336,304],{"class":254},[110,338,339],{"class":120},"6379:6379\n",[110,341,343,346],{"class":112,"line":342},12,[110,344,345],{"class":250},"    volumes",[110,347,272],{"class":254},[110,349,351],{"class":112,"line":350},13,[110,352,354],{"class":353},"sJ8bj","      # Sunucuda veya lokalde redis verisinin kalıcı olarak tutulacağı dizin\n",[110,356,358,360],{"class":112,"line":357},14,[110,359,304],{"class":254},[110,361,362],{"class":120},".\u002Fdata:\u002Fbitnami\u002Fredis\u002Fdata\n",[14,364,365,366,369],{},"Ve son olarak ",[38,367,368],{},"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ı.",[71,371],{},[373,374,376],"h3",{"id":375},"redis-docker-compose-parametreleri-ve-anlamları","Redis Docker-Compose Parametreleri ve Anlamları",[378,379,380,397],"table",{},[381,382,383],"thead",{},[384,385,386,391,394],"tr",{},[387,388,390],"th",{"align":389},"left","Parametre \u002F Çevre Değişkeni",[387,392,393],{"align":389},"Varsayılan \u002F Önerilen",[387,395,396],{"align":389},"Açıklama",[398,399,400,421,438,455,472],"tbody",{},[384,401,402,410,415],{},[403,404,405],"td",{"align":389},[18,406,407],{},[38,408,409],{},"ALLOW_EMPTY_PASSWORD",[403,411,412],{"align":389},[38,413,414],{},"no",[403,416,417,418,420],{"align":389},"Boş şifre ile bağlantıya izin verilip verilmeyeceği (güvenlik için ",[38,419,414],{}," olmalıdır).",[384,422,423,430,435],{},[403,424,425],{"align":389},[18,426,427],{},[38,428,429],{},"REDIS_PASSWORD",[403,431,432],{"align":389},[38,433,434],{},"\u003Cgüvenli_şifre>",[403,436,437],{"align":389},"Redis sunucusuna erişmek için kullanılacak şifre.",[384,439,440,447,452],{},[403,441,442],{"align":389},[18,443,444],{},[38,445,446],{},"REDIS_DISABLE_COMMANDS",[403,448,449],{"align":389},[38,450,451],{},"FLUSHDB,FLUSHALL",[403,453,454],{"align":389},"Güvenlik amacıyla devredışı bırakılan kritik Redis komutları.",[384,456,457,464,469],{},[403,458,459],{"align":389},[18,460,461],{},[38,462,463],{},"ports",[403,465,466],{"align":389},[38,467,468],{},"6379:6379",[403,470,471],{"align":389},"Ana makine ile konteyner arasındaki port eşleştirmesi.",[384,473,474,481,486],{},[403,475,476],{"align":389},[18,477,478],{},[38,479,480],{},"volumes",[403,482,483],{"align":389},[38,484,485],{},".\u002Fdata:\u002Fbitnami\u002Fredis\u002Fdata",[403,487,488],{"align":389},"Verilerin konteyner kapandığında kaybolmaması için kalıcı (persistent) depolama.",[71,490],{},[492,493,495],"h5",{"id":494},"bu-yazıda-yapılan-değişiklikler","Bu Yazıda Yapılan Değişiklikler",[22,497,498,501],{},[25,499,500],{},"11.05.2022: Yazı özeti düzenlendi.",[25,502,503,504,506,507,509],{},"21.06.2026: Dockerfile açıklama satırı hatası ve geçersiz YAML girintileri düzeltildi, ",[38,505,54],{}," (tireli) kullanımları modern ",[38,508,58],{}," (boşluklu) CLI standardına çekildi, TL;DR özet ve parametre tablosu eklendi.",[511,512,513],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}",{"title":106,"searchDepth":170,"depth":170,"links":515},[516,517],{"id":76,"depth":170,"text":77},{"id":186,"depth":170,"text":187,"children":518},[519],{"id":375,"depth":223,"text":376},[521],"technical",null,"2021-03-09","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ı.",false,"md","\u002Fimages\u002Fhero\u002Fredis.avif",{},"\u002Ftr\u002Fdocker-ile-redis-kurulumu",{"title":6,"description":524},"docker-ile-redis-kurulumu","tr\u002Fdocker-ile-redis-kurulumu",[534,117,535,536],"devops","full-stack","redis","2026-06-21","siiwWDJufYFU6BmDiTFsWkbbIf2cQzxrURBDYHjLQLs",{"prev":540,"next":543,"others":546,"lucky":663,"readingTime":170},{"path":541,"title":542},"\u002Ftr\u002Fdocker-ile-rabbitmq-kurulumu","Docker ile RabbitMQ Kurulumu",{"path":544,"title":545},"\u002Ftr\u002Fdocker-ile-mariadb-kurulumu","Docker ile MariaDB Kurulumu",[547,550,553,556,559,562,565,568,571,574,577,580,581,584,587,590,593,596,599,602,605,608,611,612,615,618,621,624,627,630,633,636,639,642,645,648,651,654,657,660],{"path":548,"title":549},"\u002Ftr\u002Ftailwind-css-just-in-time-modu","Tailwind CSS Just-in-Time (JIT) Modu Nedir?",{"path":551,"title":552},"\u002Ftr\u002Fmediator-tasarim-deseni-nedir","Mediator Tasarım Deseni Nedir?",{"path":554,"title":555},"\u002Ftr\u002Fes16-nedir-ecmascript-2025-nedir","ES16 nedir? ECMAScript 2025 nedir?",{"path":557,"title":558},"\u002Ftr\u002Fes13-nedir-ecmascript-2022-nedir","ES13 nedir? ECMAScript 2022 nedir?",{"path":560,"title":561},"\u002Ftr\u002Fgo-programlama-dilinin-ozellikleri","Go Programlama Dilinin Özellikleri",{"path":563,"title":564},"\u002Ftr\u002Fopenlitespeed-ve-litespeed-enterprisei-reverse-proxy-olarak-kullanmak","OpenLiteSpeed ve LiteSpeed Enterprise Sunucularını Reverse Proxy Olarak Kullanmak",{"path":566,"title":567},"\u002Ftr\u002Fdigital-oceanda-vps-kurulumu","DigitalOcean'da VPS (Droplet) Kurulumu: Adım Adım Rehber",{"path":569,"title":570},"\u002Ftr\u002Fchain-of-responsibility-deseni-nedir","Chain of Responsibility Deseni Nedir?",{"path":572,"title":573},"\u002Ftr\u002Fgarbage-collection-ve-golang","Garbage Collection ve Go (Golang)",{"path":575,"title":576},"\u002Ftr\u002Fdocker-ile-litespeed-enterprise-kurulumu","Docker ile LiteSpeed Enterprise Kurulumu",{"path":578,"title":579},"\u002Ftr\u002Fprototype-tasarim-deseni-nedir","Prototype Tasarım Deseni Nedir?",{"path":544,"title":545},{"path":582,"title":583},"\u002Ftr\u002Fphp-ve-makine-ogrenimi-php-ml-kutuphanesi","PHP ve Makine Öğrenimi: PHP-ML Kütüphanesi ile Pratik Çözümler",{"path":585,"title":586},"\u002Ftr\u002Fwebpack-nedir","Webpack Nedir? Modern JavaScript Paketleyici Ekosistemi",{"path":588,"title":589},"\u002Ftr\u002Fbuilder-tasarim-deseni-nedir","Builder Tasarım Deseni Nedir?",{"path":591,"title":592},"\u002Ftr\u002Fiterator-tasarim-deseni-nedir","Iterator Tasarım Deseni Nedir?",{"path":594,"title":595},"\u002Ftr\u002Fes17-nedir-ecmascript-2026-nedir","ES17 nedir? ECMAScript 2026 nedir?",{"path":597,"title":598},"\u002Ftr\u002Fgraylog-nedir-docker-ile-nasil-kurulur","Graylog Nedir? Docker Compose ile Adım Adım Kurulum Rehberi",{"path":600,"title":601},"\u002Ftr\u002Fphp-generator-ve-iterator-farki","PHP'de Generator ve Iterator Arasındaki Temel Farklar",{"path":603,"title":604},"\u002Ftr\u002Frest-api-uri-yapisi-nasil-olmali","REST API URI Yapısı Nasıl Olmalı?",{"path":606,"title":607},"\u002Ftr\u002Fearly-return-erken-donus-nedir","Early Return \u002F Erken Dönüş nedir?",{"path":609,"title":610},"\u002Ftr\u002Fcomposite-tasarim-deseni-nedir","Composite Tasarım Deseni Nedir?",{"path":541,"title":542},{"path":613,"title":614},"\u002Ftr\u002Fes7-nedir-ecmascript-2016-nedir","ES7 Nedir? ECMAScript 2016 Nedir?",{"path":616,"title":617},"\u002Ftr\u002Fwordpress-yonetici-sifresini-wp-cli-kullanarak-sifirlama","WordPress Yönetici Şifresini WP-CLI Kullanarak Sıfırlama",{"path":619,"title":620},"\u002Ftr\u002Fjwt-guvenli-mi-guvenlik-acigi-olusturmayin","JWT Güvenli Derken Güvenlik Açığı Oluşturmayın",{"path":622,"title":623},"\u002Ftr\u002Frest-api-tasarimi","REST API Tasarım İncelikleri",{"path":625,"title":626},"\u002Ftr\u002Fstrategy-tasarim-deseni-nedir","Strategy Tasarım Deseni Nedir?",{"path":628,"title":629},"\u002Ftr\u002Ftemplate-method-tasarim-deseni-nedir","Template Method Tasarım Deseni Nedir?",{"path":631,"title":632},"\u002Ftr\u002Fvue-3-hakkinda-bilmeniz-gerekenler-yenilikler","Vue 3 Hakkında Bilmeniz Gerekenler ve Yenilikler",{"path":634,"title":635},"\u002Ftr\u002Fmerhaba-phalcon-framework","Merhaba Phalcon Framework",{"path":637,"title":638},"\u002Ftr\u002Fubuntu-20-04-composer-kurulumu","Ubuntu 20.04 - Composer Kurulumu",{"path":640,"title":641},"\u002Ftr\u002Fes8-nedir-ecmascript-2017-nedir","ES8 Nedir? ECMAScript 2017 Nedir?",{"path":643,"title":644},"\u002Ftr\u002Ffull-stack-proje-gelistiriyoruz","Full Stack Proje Geliştiriyoruz",{"path":646,"title":647},"\u002Ftr\u002Fes12-nedir-ecmascript-2021-nedir","ES12 Nedir? ECMAScript 2021 Nedir?",{"path":649,"title":650},"\u002Ftr\u002Fheadless-wordpress-hakkinda-her-sey","Headless WordPress Hakkında Her Şey",{"path":652,"title":653},"\u002Ftr\u002Fes9-nedir-ecmascript-2018-nedir","ES9 Nedir? ECMAScript 2018 Nedir?",{"path":655,"title":656},"\u002Ftr\u002Fgo-ile-websockets-websocket-upgrader-nedir","Go ile WebSockets: Upgrader Nedir?",{"path":658,"title":659},"\u002Ftr\u002Fself-hosted-api-gateway-nasil-kurulur-kapsamli-rehber","Self-Hosted API Gateway Nasıl Kurulur? Kapsamlı Rehber",{"path":661,"title":662},"\u002Ftr\u002Fdesign-patterns-tasarim-desenleri-nedir","Design Patterns \u002F Tasarım Desenleri nedir?",{"path":664,"title":665},"\u002Ftr\u002Fes11-nedir-ecmascript-2020-nedir","ES11 Nedir? ECMAScript 2020 Nedir?",[667,669,673,675],{"path":544,"title":545,"date":668},"2021-03-01",{"path":670,"title":671,"date":672},"\u002Ftr\u002Fdocker-ve-portainer-kurulumu","Docker ve Portainer Kurulumu","2021-02-21",{"path":541,"title":542,"date":674},"2021-03-11",{"path":575,"title":576,"date":672},[677,681,685],{"path":678,"title":679,"date":680},"\u002Ftr\u002Fes10-nedir-ecmascript-2019-nedir","ES10 Nedir? ECMAScript 2019 Nedir?","2021-10-19",{"path":682,"title":683,"date":684},"\u002Ftr\u002Flitespeed-web-server-performans-artisi","Konfor Alanından Çıkıp, Konforlu Bir VPS'e Geçmek: LiteSpeed Web Server","2021-02-19",{"path":686,"title":687,"date":688},"\u002Ftr\u002Fobserver-tasarim-deseni-nedir","Observer Tasarım Deseni Nedir?","2021-10-05",1782142098208]