{"id":34673,"date":"2025-11-20T14:40:51","date_gmt":"2025-11-20T11:40:51","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=34673"},"modified":"2025-11-20T14:40:51","modified_gmt":"2025-11-20T11:40:51","slug":"rocky-linux-8-uzerine-docker-compose-kurulumu-ve-kullanimi","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/rocky-linux-8-uzerine-docker-compose-kurulumu-ve-kullanimi\/","title":{"rendered":"Rocky Linux 8 \u00dczerine Docker Compose Kurulumu ve Kullan\u0131m\u0131"},"content":{"rendered":"<p><body><\/p>\n<h2>Rocky Linux 8 \u00dczerine Docker Compose Kurulumu ve Kullan\u0131m\u0131<\/h2>\n<p>Rocky Linux 8, CentOS&#8217;un kararl\u0131 ve topluluk destekli bir halefi olarak, sunucu ortamlar\u0131nda ve geli\u015ftirme i\u015f ak\u0131\u015flar\u0131nda giderek daha fazla tercih edilmektedir. Modern uygulama geli\u015ftirme ve da\u011f\u0131t\u0131m s\u00fcre\u00e7lerinde konteyner teknolojileri merkezi bir rol oynamaktad\u0131r. Docker, uygulamalar\u0131 ba\u011f\u0131ml\u0131l\u0131klar\u0131yla birlikte hafif, ta\u015f\u0131nabilir konteynerler i\u00e7inde paketleyerek bu s\u00fcreci kolayla\u015ft\u0131r\u0131r. Ancak ger\u00e7ek d\u00fcnya uygulamalar\u0131 genellikle tek bir konteynerden fazlas\u0131n\u0131 gerektirir; bir veritaban\u0131, bir \u00f6n u\u00e7, bir arka u\u00e7 servisi ve belki de bir \u00f6nbellek gibi birden \u00e7ok servisten olu\u015fur. \u0130\u015fte bu noktada Docker Compose devreye girer.<\/p>\n<p>Docker Compose, birden \u00e7ok konteynerden olu\u015fan Docker uygulamalar\u0131n\u0131 tan\u0131mlamak ve \u00e7al\u0131\u015ft\u0131rmak i\u00e7in bir ara\u00e7t\u0131r. Tek bir YAML dosyas\u0131 kullanarak t\u00fcm uygulama servislerinizi yap\u0131land\u0131rabilir, ba\u015flatabilir, durdurabilir ve y\u00f6netebilirsiniz. Bu, karma\u015f\u0131k \u00e7oklu servis mimarilerini basitle\u015ftirerek geli\u015ftiricilerin ve sistem y\u00f6neticilerinin hayat\u0131n\u0131 \u00f6nemli \u00f6l\u00e7\u00fcde kolayla\u015ft\u0131r\u0131r.<\/p>\n<p>Bu kapsaml\u0131 teknik makalede, Rocky Linux 8 i\u015fletim sistemi \u00fczerine Docker Engine ve ard\u0131ndan Docker Compose&#8217;u nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m a\u00e7\u0131klayaca\u011f\u0131z. Ayr\u0131ca, temel Docker Compose komutlar\u0131n\u0131 ve <code>docker-compose.yml<\/code> dosyas\u0131n\u0131n yap\u0131s\u0131n\u0131 anlayarak \u00f6rnek bir \u00e7oklu konteyner uygulamas\u0131n\u0131 nas\u0131l da\u011f\u0131taca\u011f\u0131n\u0131z\u0131 ve y\u00f6netece\u011finizi g\u00f6sterece\u011fiz. Makalenin sonunda, Docker Compose ile \u00e7al\u0131\u015f\u0131rken kar\u015f\u0131la\u015fabilece\u011finiz yayg\u0131n sorunlara ve en iyi uygulamalara da de\u011finece\u011fiz. Bu k\u0131lavuz, hem Docker ve konteyner teknolojilerine yeni ba\u015flayanlar hem de mevcut bilgilerini Rocky Linux 8 ortam\u0131nda peki\u015ftirmek isteyen deneyimli kullan\u0131c\u0131lar i\u00e7in de\u011ferli bir kaynak olacakt\u0131r.<\/p>\n<h3>\u00d6n Ko\u015fullar<\/h3>\n<p>Bu makaledeki ad\u0131mlar\u0131 takip etmeden \u00f6nce a\u015fa\u011f\u0131daki \u00f6n ko\u015fullar\u0131n yerine getirildi\u011finden emin olun:<\/p>\n<p>*   <strong>Rocky Linux 8 \u0130\u015fletim Sistemi:<\/strong> Kurulmu\u015f ve \u00e7al\u0131\u015fan bir Rocky Linux 8 sunucusu veya sanal makinesi.<br \/>\n*   <strong>Sudo Yetkileri:<\/strong> Komutlar\u0131 \u00e7al\u0131\u015ft\u0131rmak i\u00e7in <code>sudo<\/code> ayr\u0131cal\u0131klar\u0131na sahip bir kullan\u0131c\u0131 hesab\u0131.<br \/>\n*   <strong>\u0130nternet Ba\u011flant\u0131s\u0131:<\/strong> Gerekli paketleri ve Docker g\u00f6r\u00fcnt\u00fclerini indirmek i\u00e7in aktif bir internet ba\u011flant\u0131s\u0131.<\/p>\n<h3>Ad\u0131m 1: Rocky Linux 8 Sistemini G\u00fcncelleme<\/h3>\n<p>Herhangi bir yaz\u0131l\u0131m kurulumuna ba\u015flamadan \u00f6nce sisteminizin g\u00fcncel oldu\u011fundan emin olmak iyi bir pratiktir. Bu, olas\u0131 ba\u011f\u0131ml\u0131l\u0131k sorunlar\u0131n\u0131 \u00f6nlemeye ve en yeni g\u00fcvenlik yamalar\u0131na sahip olmaya yard\u0131mc\u0131 olur.<\/p>\n<p>Terminalinizi a\u00e7\u0131n ve a\u015fa\u011f\u0131daki komutlar\u0131 \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo dnf update -y\nsudo dnf upgrade -y<\/code><\/pre>\n<p>*   <code>sudo dnf update -y<\/code>: Sistemdeki t\u00fcm y\u00fckl\u00fc paketlerin meta verilerini g\u00fcnceller ve g\u00fcvenlik yamalar\u0131 ile hata d\u00fczeltmelerini i\u00e7eren g\u00fcncellemeleri kurar. <code>-y<\/code> bayra\u011f\u0131, t\u00fcm sorulara otomatik olarak &#8220;evet&#8221; yan\u0131t\u0131 verir.<br \/>\n*   <code>sudo dnf upgrade -y<\/code>: Mevcut paketleri en son s\u00fcr\u00fcmlerine y\u00fckseltir.<\/p>\n<p>Bu komutlar\u0131n tamamlanmas\u0131 biraz zaman alabilir. \u0130\u015flem bittikten sonra, e\u011fer \u00e7ekirdek (kernel) g\u00fcncellenmi\u015fse, sisteminizi yeniden ba\u015flatman\u0131z \u00f6nerilir:<\/p>\n<pre><code class=\"language-bash\">sudo reboot<\/code><\/pre>\n<h3>Ad\u0131m 2: Docker Engine Kurulumu<\/h3>\n<p>Docker Compose, Docker Engine&#8217;in \u00fczerine in\u015fa edildi\u011fi i\u00e7in, \u00f6ncelikle Docker Engine&#8217;in Rocky Linux 8 sisteminize kurulmas\u0131 gerekmektedir.<\/p>\n<h4>Docker Engine Nedir?<\/h4>\n<p>Docker Engine, Docker uygulamalar\u0131n\u0131 olu\u015fturan ve \u00e7al\u0131\u015ft\u0131ran temel teknolojidir. Bir sunucu-istemci mimarisine sahiptir. Docker Daemon (sunucu), konteynerleri olu\u015fturan, \u00e7al\u0131\u015ft\u0131ran ve y\u00f6neten arka plan servisidir. Docker CLI (istemci), kullan\u0131c\u0131lar\u0131n Docker Daemon ile etkile\u015fim kurmas\u0131n\u0131 sa\u011flayan komut sat\u0131r\u0131 aray\u00fcz\u00fcd\u00fcr.<\/p>\n<h4>Gerekli Ba\u011f\u0131ml\u0131l\u0131klar\u0131 Kurma<\/h4>\n<p>Docker deposunu eklemeden \u00f6nce, Docker&#8217;\u0131n ihtiya\u00e7 duydu\u011fu baz\u0131 temel yard\u0131mc\u0131 programlar\u0131 ve depolama s\u00fcr\u00fcc\u00fclerini kurman\u0131z gerekir.<\/p>\n<pre><code class=\"language-bash\">sudo dnf install -y dnf-utils device-mapper-persistent-data lvm2<\/code><\/pre>\n<p>*   <code>dnf-utils<\/code>: DNF paket y\u00f6neticisi i\u00e7in ek yard\u0131mc\u0131 programlar sa\u011flar. <code>dnf config-manager<\/code> komutu bunun bir par\u00e7as\u0131d\u0131r.<br \/>\n*   <code>device-mapper-persistent-data<\/code> ve <code>lvm2<\/code>: Bunlar, Docker&#8217;\u0131n depolama s\u00fcr\u00fcc\u00fcleri i\u00e7in gerekli olan paketlerdir.<\/p>\n<h4>Docker Deposunu Ekleme<\/h4>\n<p>Rocky Linux, CentOS ile ikili uyumlu oldu\u011fundan, Docker&#8217;\u0131n CentOS i\u00e7in sa\u011flad\u0131\u011f\u0131 resmi depoyu kullanabiliriz.<\/p>\n<pre><code class=\"language-bash\">sudo dnf config-manager --add-repo https:\/\/download.docker.com\/linux\/centos\/docker-ce.repo<\/code><\/pre>\n<p>Bu komut, Docker CE (Community Edition) deposunu sisteminizin DNF yap\u0131land\u0131rmas\u0131na ekler. Art\u0131k Docker paketlerini DNF arac\u0131l\u0131\u011f\u0131yla kurabilirsiniz.<\/p>\n<h4>Docker Engine&#8217;i Kurma<\/h4>\n<p>Depo eklendikten sonra, Docker Engine&#8217;i ve ilgili bile\u015fenlerini kurabiliriz.<\/p>\n<pre><code class=\"language-bash\">sudo dnf install -y docker-ce docker-ce-cli containerd.io<\/code><\/pre>\n<p>*   <code>docker-ce<\/code>: Docker Engine&#8217;in kendisi.<br \/>\n*   <code>docker-ce-cli<\/code>: Docker komut sat\u0131r\u0131 aray\u00fcz\u00fc (CLI).<br \/>\n*   <code>containerd.io<\/code>: Konteyner ya\u015fam d\u00f6ng\u00fcs\u00fcn\u00fc y\u00f6neten bir end\u00fcstri standard\u0131 konteyner \u00e7al\u0131\u015fma zaman\u0131. Docker Engine, konteynerleri \u00e7al\u0131\u015ft\u0131rmak i\u00e7in <code>containerd<\/code>&#8216;i kullan\u0131r.<\/p>\n<h4>Docker Servisini Ba\u015flatma ve Etkinle\u015ftirme<\/h4>\n<p>Kurulum tamamland\u0131ktan sonra Docker servisini ba\u015flatman\u0131z ve sistem ba\u015flang\u0131c\u0131nda otomatik olarak ba\u015flamas\u0131 i\u00e7in etkinle\u015ftirmeniz gerekir.<\/p>\n<pre><code class=\"language-bash\">sudo systemctl start docker\nsudo systemctl enable docker<\/code><\/pre>\n<p>Servisin durumunu kontrol ederek do\u011fru \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl status docker<\/code><\/pre>\n<p>\u00c7\u0131kt\u0131da <code>Active: active (running)<\/code> ifadesini g\u00f6rmelisiniz.<\/p>\n<h4>Kullan\u0131c\u0131y\u0131 Docker Grubuna Ekleme<\/h4>\n<p>Varsay\u0131lan olarak, Docker komutlar\u0131n\u0131 \u00e7al\u0131\u015ft\u0131rmak i\u00e7in <code>sudo<\/code> kullanman\u0131z gerekir. Her seferinde <code>sudo<\/code> yazmaktan ka\u00e7\u0131nmak i\u00e7in, mevcut kullan\u0131c\u0131n\u0131z\u0131 <code>docker<\/code> grubuna ekleyebilirsiniz. Bu, kullan\u0131c\u0131n\u0131za Docker Daemon ile do\u011frudan etkile\u015fim kurma yetkisi verir.<\/p>\n<pre><code class=\"language-bash\">sudo usermod -aG docker $USER<\/code><\/pre>\n<p>*   <code>usermod<\/code>: Kullan\u0131c\u0131 hesaplar\u0131n\u0131 de\u011fi\u015ftirmek i\u00e7in kullan\u0131l\u0131r.<br \/>\n*   <code>-aG<\/code>: Kullan\u0131c\u0131y\u0131 belirtilen gruba ekler (<code>-a<\/code> eklemek, <code>-G<\/code> grup belirtmek i\u00e7in).<br \/>\n*   <code>docker<\/code>: Eklemek istedi\u011fimiz grubun ad\u0131.<br \/>\n*   <code>$USER<\/code>: Mevcut kullan\u0131c\u0131n\u0131z\u0131n ad\u0131n\u0131 temsil eden bir kabuk de\u011fi\u015fkenidir.<\/p>\n<p>Bu de\u011fi\u015fikliklerin etkili olmas\u0131 i\u00e7in oturumu kapat\u0131p yeniden a\u00e7man\u0131z veya a\u015fa\u011f\u0131daki komutu \u00e7al\u0131\u015ft\u0131rman\u0131z gerekir:<\/p>\n<pre><code class=\"language-bash\">newgrp docker<\/code><\/pre>\n<p>Bu komut, mevcut kabuk oturumunuz i\u00e7in <code>docker<\/code> grubunun yeni \u00fcyeliklerini uygular.<\/p>\n<h4>Docker Kurulumunu Do\u011frulama<\/h4>\n<p>Docker&#8217;\u0131n do\u011fru \u015fekilde kuruldu\u011funu ve kullan\u0131c\u0131n\u0131z\u0131n yetkilendirildi\u011fini do\u011frulamak i\u00e7in basit bir test konteyneri \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code class=\"language-bash\">docker run hello-world<\/code><\/pre>\n<p>Bu komut, k\u00fc\u00e7\u00fck bir test g\u00f6r\u00fcnt\u00fcs\u00fcn\u00fc indirir ve bir konteyner i\u00e7inde \u00e7al\u0131\u015ft\u0131r\u0131r. E\u011fer her \u015fey yolundaysa, terminalinizde &#8220;Hello from Docker!&#8221; mesaj\u0131n\u0131 i\u00e7eren bir \u00e7\u0131kt\u0131 g\u00f6rmelisiniz.<\/p>\n<h3>Ad\u0131m 3: Docker Compose Kurulumu<\/h3>\n<p>Docker Engine ba\u015far\u0131yla kurulduktan sonra, s\u0131ra Docker Compose&#8217;a gelir. Docker Compose, Docker Engine gibi, <code>docker-compose<\/code> komutunu kullanarak kontrol edilen ayr\u0131 bir ara\u00e7t\u0131r.<\/p>\n<h4>Docker Compose Nedir?<\/h4>\n<p>Daha \u00f6nce de belirtildi\u011fi gibi, Docker Compose, \u00e7oklu konteyner Docker uygulamalar\u0131n\u0131 tan\u0131mlamak ve \u00e7al\u0131\u015ft\u0131rmak i\u00e7in kullan\u0131lan bir ara\u00e7t\u0131r. Bir <code>docker-compose.yml<\/code> dosyas\u0131 kullanarak, uygulaman\u0131z\u0131n t\u00fcm servislerini, a\u011flar\u0131n\u0131 ve birimlerini tek bir dosyada yap\u0131land\u0131rabilirsiniz. Bu, uygulaman\u0131z\u0131n t\u00fcm bile\u015fenlerini tek bir komutla ba\u015flatman\u0131za olanak tan\u0131r.<\/p>\n<h4>Kurulum Y\u00f6ntemleri<\/h4>\n<p>Docker Compose&#8217;u kurman\u0131n birka\u00e7 yolu vard\u0131r, ancak en yayg\u0131n ve \u00f6nerilen y\u00f6ntem, Docker&#8217;\u0131n GitHub deposundan do\u011frudan ikili (binary) dosyay\u0131 indirmektir. Eski s\u00fcr\u00fcmler Python <code>pip<\/code> arac\u0131yla kurulabiliyordu, ancak Docker Compose v2 ile birlikte bu y\u00f6ntem art\u0131k \u00f6nerilmemektedir. Docker Compose v2, Go dilinde yeniden yaz\u0131lm\u0131\u015f ve <code>docker compose<\/code> olarak Docker CLI&#8217;ye entegre edilmi\u015ftir (ayr\u0131 bir <code>docker-compose<\/code> ikilisi olarak da kullan\u0131labilir).<\/p>\n<h4>Binary \u0130ndirme Y\u00f6ntemi ile Kurulum<\/h4>\n<p>Bu y\u00f6ntem, en g\u00fcncel ve kararl\u0131 Docker Compose s\u00fcr\u00fcm\u00fcn\u00fc kurman\u0131n en basit ve en g\u00fcvenilir yoludur.<\/p>\n<p>1.  <strong>En Son S\u00fcr\u00fcm\u00fc Bulma:<\/strong> Docker Compose&#8217;un en son kararl\u0131 s\u00fcr\u00fcm\u00fcn\u00fc bulmak i\u00e7in Docker&#8217;\u0131n GitHub yay\u0131nlar sayfas\u0131na (github.com\/docker\/compose\/releases) g\u00f6z atman\u0131z \u00f6nerilir. Bu makalenin yaz\u0131ld\u0131\u011f\u0131 an itibar\u0131yla en son kararl\u0131 s\u00fcr\u00fcm v2.24.5&#8217;tir. Siz kurulum yaparken daha yeni bir s\u00fcr\u00fcm mevcut olabilir, bu y\u00fczden URL&#8217;deki s\u00fcr\u00fcm numaras\u0131n\u0131 kontrol etmeyi unutmay\u0131n.<\/p>\n<p>2.  <strong>\u0130kili Dosyay\u0131 \u0130ndirme:<\/strong> A\u015fa\u011f\u0131daki <code>curl<\/code> komutunu kullanarak Docker Compose ikili dosyas\u0131n\u0131 <code>\/usr\/local\/bin<\/code> dizinine indirin. Bu dizin, sistem genelinde \u00e7al\u0131\u015ft\u0131r\u0131labilir dosyalar i\u00e7in standart bir yoldur.<\/p>\n<pre><code class=\"language-bash\">sudo curl -L \"https:\/\/github.com\/docker\/compose\/releases\/download\/v2.24.5\/docker-compose-$(uname -s)-$(uname -m)\" -o \/usr\/local\/bin\/docker-compose<\/code><\/pre>\n<p>    *   <code>curl -L<\/code>: Belirtilen URL&#8217;den dosyay\u0131 indirir ve y\u00f6nlendirmeleri takip eder.<br \/>\n    *   <code>https:\/\/github.com\/docker\/compose\/releases\/download\/v2.24.5\/docker-compose-$(uname -s)-$(uname -m)<\/code>: \u0130ndirilecek dosyan\u0131n URL&#8217;sidir.<br \/>\n        *   <code>v2.24.5<\/code>: Docker Compose s\u00fcr\u00fcm numaras\u0131. Bunu g\u00fcncel s\u00fcr\u00fcmle de\u011fi\u015ftirebilirsiniz.<br \/>\n        *   <code>$(uname -s)<\/code>: \u0130\u015fletim sisteminin ad\u0131n\u0131 (\u00f6rne\u011fin, <code>Linux<\/code>) d\u00f6nd\u00fcr\u00fcr.<br \/>\n        *   <code>$(uname -m)<\/code>: Makine donan\u0131m mimarisini (\u00f6rne\u011fin, <code>x86_64<\/code> veya <code>aarch64<\/code>) d\u00f6nd\u00fcr\u00fcr. Bu, do\u011fru mimariye sahip ikili dosyay\u0131 indirmeyi sa\u011flar.<br \/>\n    *   <code>-o \/usr\/local\/bin\/docker-compose<\/code>: \u0130ndirilen dosyay\u0131 <code>\/usr\/local\/bin<\/code> dizinine <code>docker-compose<\/code> ad\u0131yla kaydeder.<\/p>\n<p>3.  <strong>\u00c7al\u0131\u015ft\u0131r\u0131labilir \u0130zinleri Verme:<\/strong> \u0130ndirilen dosyan\u0131n \u00e7al\u0131\u015ft\u0131r\u0131labilir olmas\u0131 i\u00e7in izinleri ayarlaman\u0131z gerekir.<\/p>\n<pre><code class=\"language-bash\">sudo chmod +x \/usr\/local\/bin\/docker-compose<\/code><\/pre>\n<p>    *   <code>chmod +x<\/code>: Dosyaya \u00e7al\u0131\u015ft\u0131rma izni verir.<\/p>\n<p>4.  <strong>Kurulumu Do\u011frulama:<\/strong> Docker Compose&#8217;un do\u011fru \u015fekilde kuruldu\u011funu ve eri\u015filebilir oldu\u011funu do\u011frulamak i\u00e7in s\u00fcr\u00fcm\u00fcn\u00fc kontrol edin.<\/p>\n<pre><code class=\"language-bash\">docker-compose --version<\/code><\/pre>\n<p>    \u00c7\u0131kt\u0131 olarak <code>Docker Compose version v2.24.5<\/code> (veya indirdi\u011finiz s\u00fcr\u00fcm) gibi bir mesaj g\u00f6rmelisiniz.<\/p>\n<p>    Baz\u0131 durumlarda, <code>docker compose<\/code> komutunu do\u011frudan Docker CLI arac\u0131l\u0131\u011f\u0131yla da kullanabilirsiniz. Bu, genellikle Docker Desktop veya daha yeni Docker Engine s\u00fcr\u00fcmleriyle birlikte gelir. <code>docker compose version<\/code> komutunu da deneyebilirsiniz. E\u011fer <code>docker-compose<\/code> ayr\u0131 bir ikili olarak \u00e7al\u0131\u015f\u0131yorsa, her iki komut da ayn\u0131 veya benzer \u00e7\u0131kt\u0131y\u0131 verecektir.<\/p>\n<h3>Ad\u0131m 4: Docker Compose Kullan\u0131m\u0131<\/h3>\n<p>Docker Compose art\u0131k Rocky Linux 8 sisteminize kuruldu\u011funa g\u00f6re, nas\u0131l kullan\u0131laca\u011f\u0131n\u0131 bir \u00f6rnekle g\u00f6sterelim. Basit bir web uygulamas\u0131 (Nginx) ve bir veritaban\u0131 (PostgreSQL) i\u00e7eren bir \u00e7oklu servis uygulamas\u0131 olu\u015ftural\u0131m.<\/p>\n<h4>Temel Kavramlar<\/h4>\n<p>*   <strong><code>docker-compose.yml<\/code> Dosyas\u0131:<\/strong> Docker Compose&#8217;un kalbidir. Uygulaman\u0131z\u0131n servislerini, a\u011flar\u0131n\u0131 ve birimlerini YAML format\u0131nda tan\u0131mlad\u0131\u011f\u0131n\u0131z yerdir.<br \/>\n*   <strong>Servisler (Services):<\/strong> Uygulaman\u0131z\u0131n her bir bile\u015feni (\u00f6rne\u011fin, web sunucusu, veritaban\u0131, arka u\u00e7 API&#8217;si) bir servis olarak tan\u0131mlan\u0131r. Her servis, bir Docker g\u00f6r\u00fcnt\u00fcs\u00fcnden olu\u015fturulur ve kendi ayarlar\u0131yla \u00e7al\u0131\u015f\u0131r.<br \/>\n*   <strong>A\u011flar (Networks):<\/strong> Servislerin birbirleriyle ileti\u015fim kurmas\u0131n\u0131 sa\u011flayan sanal a\u011flard\u0131r. Docker Compose, varsay\u0131lan olarak t\u00fcm servisler i\u00e7in bir k\u00f6pr\u00fc a\u011f\u0131 olu\u015fturur.<br \/>\n*   <strong>Birimler (Volumes):<\/strong> Konteynerler yeniden olu\u015fturuldu\u011funda bile verilerin kal\u0131c\u0131 olmas\u0131n\u0131 sa\u011flamak i\u00e7in kullan\u0131l\u0131r.<\/p>\n<h4>\u00d6rnek Bir Uygulama Olu\u015fturma<\/h4>\n<p>1.  <strong>Proje Dizini Olu\u015fturma:<\/strong> Uygulaman\u0131z i\u00e7in yeni bir dizin olu\u015fturun ve i\u00e7ine girin. Bu, uygulaman\u0131z\u0131n t\u00fcm dosyalar\u0131n\u0131 d\u00fczenli tutman\u0131za yard\u0131mc\u0131 olur.<\/p>\n<pre><code class=\"language-bash\">mkdir my-nginx-postgres-app\n    cd my-nginx-postgres-app<\/code><\/pre>\n<p>2.  <strong><code>docker-compose.yml<\/code> Dosyas\u0131 Olu\u015fturma:<\/strong> Proje dizininizde <code>docker-compose.yml<\/code> ad\u0131nda bir dosya olu\u015fturun ve a\u015fa\u011f\u0131daki i\u00e7eri\u011fi yap\u0131\u015ft\u0131r\u0131n.<\/p>\n<pre><code class=\"language-yaml\">version: '3.8' # Docker Compose dosyas\u0131n\u0131n versiyonu\n    services:\n      web: # Nginx servisi\n        image: nginx:latest # Nginx'in en son s\u00fcr\u00fcm\u00fcn\u00fc kullan\n        ports:\n          - \"80:80\" # Host'un 80. portunu konteynerin 80. portuna y\u00f6nlendir\n        volumes:\n          - .\/nginx\/conf.d:\/etc\/nginx\/conf.d # \u00d6zel Nginx yap\u0131land\u0131rma dosyalar\u0131n\u0131 ba\u011fla\n          - .\/nginx\/html:\/usr\/share\/nginx\/html # Web sitesi dosyalar\u0131n\u0131 ba\u011fla\n        depends_on:\n          - db # 'web' servisi 'db' servisi ba\u015flamadan ba\u015flamaz\n        restart: always # Konteyner hata verirse veya sistem yeniden ba\u015flat\u0131l\u0131rsa otomatik olarak yeniden ba\u015fla\n\n      db: # PostgreSQL veritaban\u0131 servisi\n        image: postgres:13 # PostgreSQL 13 s\u00fcr\u00fcm\u00fcn\u00fc kullan\n        environment:\n          POSTGRES_DB: mydatabase # Veritaban\u0131 ad\u0131\n          POSTGRES_USER: myuser # Veritaban\u0131 kullan\u0131c\u0131s\u0131\n          POSTGRES_PASSWORD: mypassword # Veritaban\u0131 parolas\u0131\n        volumes:\n          - db_data:\/var\/lib\/postgresql\/data # Veritaban\u0131 verilerini kal\u0131c\u0131 bir birime kaydet\n        restart: always # Konteyner hata verirse veya sistem yeniden ba\u015flat\u0131l\u0131rsa otomatik olarak yeniden ba\u015fla\n\n    volumes: # Tan\u0131mlanm\u0131\u015f birimler\n      db_data: # PostgreSQL verileri i\u00e7in adland\u0131r\u0131lm\u0131\u015f birim<\/code><\/pre>\n<p>    Bu <code>docker-compose.yml<\/code> dosyas\u0131 \u015funlar\u0131 tan\u0131mlar:<br \/>\n    *   <strong><code>web<\/code> servisi:<\/strong> Nginx&#8217;in en son s\u00fcr\u00fcm\u00fcn\u00fc kullan\u0131r, host&#8217;un 80. portunu konteynerin 80. portuna e\u015fler. \u00d6zel Nginx yap\u0131land\u0131rmalar\u0131 ve HTML dosyalar\u0131 i\u00e7in iki adet bind mount (ba\u011flama birimi) kullan\u0131r. <code>db<\/code> servisine ba\u011f\u0131ml\u0131d\u0131r.<br \/>\n    *   <strong><code>db<\/code> servisi:<\/strong> PostgreSQL 13 s\u00fcr\u00fcm\u00fcn\u00fc kullan\u0131r, veritaban\u0131 ad\u0131, kullan\u0131c\u0131 ad\u0131 ve parolas\u0131 i\u00e7in ortam de\u011fi\u015fkenleri ayarlar. Veritaban\u0131 verilerinin kal\u0131c\u0131l\u0131\u011f\u0131 i\u00e7in <code>db_data<\/code> ad\u0131nda bir birim kullan\u0131r.<br \/>\n    *   <strong><code>volumes<\/code> b\u00f6l\u00fcm\u00fc:<\/strong> <code>db_data<\/code> ad\u0131nda, Docker taraf\u0131ndan y\u00f6netilen kal\u0131c\u0131 bir birim tan\u0131mlar.<\/p>\n<p>3.  <strong>Nginx Yap\u0131land\u0131rma ve HTML Dosyalar\u0131n\u0131 Olu\u015fturma:<\/strong> <code>web<\/code> servisi i\u00e7in gerekli olan Nginx yap\u0131land\u0131rma dosyas\u0131n\u0131 ve basit bir HTML dosyas\u0131n\u0131 olu\u015ftural\u0131m.<\/p>\n<pre><code class=\"language-bash\">mkdir -p nginx\/conf.d\n    mkdir -p nginx\/html<\/code><\/pre>\n<p>    <code>nginx\/conf.d\/default.conf<\/code> dosyas\u0131n\u0131 olu\u015fturun ve a\u015fa\u011f\u0131daki i\u00e7eri\u011fi ekleyin:<\/p>\n<pre><code class=\"language-nginx\">server {\n        listen 80;\n        server_name localhost;\n\n        location \/ {\n            root \/usr\/share\/nginx\/html;\n            index index.html;\n        }\n\n        location \/db-status {\n            # Bu sadece \u00f6rnek bir yer tutucudur.\n            # Ger\u00e7ek bir uygulamada, veritaban\u0131 ba\u011flant\u0131s\u0131n\u0131 kontrol eden bir API endpoint'i burada olabilir.\n            return 200 'Database is probably up and running!\\n';\n            add_header Content-Type text\/plain;\n        }\n    }<\/code><\/pre>\n<p>    <code>nginx\/html\/index.html<\/code> dosyas\u0131n\u0131 olu\u015fturun ve a\u015fa\u011f\u0131daki i\u00e7eri\u011fi ekleyin:<\/p>\n<pre><code class=\"language-html\"><!DOCTYPE html>\n    <html>\n    <head>\n        <title>Docker Compose Uygulamas\u0131<\/title>\n        <style>\n            body { font-family: Arial, sans-serif; text-align: center; margin-top: 50px; }\n            h1 { color: #333; }\n            p { color: #666; }\n        <\/style>\n    <\/head>\n    <body>\n        \n        <p>Nginx web sunucusu ve PostgreSQL veritaban\u0131 ba\u015far\u0131yla \u00e7al\u0131\u015f\u0131yor.<\/p>\n        <p>Bu sayfa Nginx konteyneri taraf\u0131ndan sunulmaktad\u0131r.<\/p>\n    <\/body>\n    <\/html><\/code><\/pre>\n<p>    Proje dizininizin yap\u0131s\u0131 \u015fimdi \u015f\u00f6yle g\u00f6r\u00fcnmeli:<\/p>\n<pre><code class=\"language-\">my-nginx-postgres-app\/\n    \u251c\u2500\u2500 docker-compose.yml\n    \u2514\u2500\u2500 nginx\/\n        \u251c\u2500\u2500 conf.d\/\n        \u2502   \u2514\u2500\u2500 default.conf\n        \u2514\u2500\u2500 html\/\n            \u2514\u2500\u2500 index.html<\/code><\/pre>\n<h4>Uygulamay\u0131 Ba\u015flatma<\/h4>\n<p>Art\u0131k her \u015fey haz\u0131r oldu\u011funa g\u00f6re, Docker Compose ile uygulamay\u0131 ba\u015flatabiliriz. Proje dizininizde oldu\u011funuzdan emin olun.<\/p>\n<pre><code class=\"language-bash\">docker-compose up -d<\/code><\/pre>\n<p>*   <code>up<\/code>: <code>docker-compose.yml<\/code> dosyas\u0131nda tan\u0131mlanan t\u00fcm servisleri olu\u015fturur ve ba\u015flat\u0131r.<br \/>\n*   <code> -d<\/code> (detach): Konteynerleri arka planda \u00e7al\u0131\u015ft\u0131r\u0131r ve terminali serbest b\u0131rak\u0131r. Bu olmadan, konteyner g\u00fcnl\u00fckleri terminalde g\u00f6sterilir ve terminali kapat\u0131rsan\u0131z konteynerler durur.<\/p>\n<p>Komutu \u00e7al\u0131\u015ft\u0131rd\u0131ktan sonra, Docker Compose gerekli g\u00f6r\u00fcnt\u00fcleri indirip servisleri olu\u015fturacak ve ba\u015flatacakt\u0131r. \u0130\u015flem tamamland\u0131\u011f\u0131nda, servislerin durumunu kontrol edebilirsiniz:<\/p>\n<pre><code class=\"language-bash\">docker-compose ps<\/code><\/pre>\n<p>Bu komut, uygulamadaki t\u00fcm servislerin durumunu g\u00f6sterir. Her iki servisin de <code>Up<\/code> durumunda oldu\u011funu g\u00f6rmelisiniz.<\/p>\n<p>Taray\u0131c\u0131n\u0131zda sunucunuzun IP adresini veya <code>localhost<\/code> adresini ziyaret ederek (e\u011fer yerel bir makinede \u00e7al\u0131\u015ft\u0131r\u0131yorsan\u0131z) Nginx web sayfan\u0131za eri\u015febilirsiniz: <code>http:\/\/localhost\/<\/code> veya <code>http:\/\/<sunucu_IP_adresi>\/<\/code>.<\/p>\n<h4>Uygulamay\u0131 Durdurma ve Kald\u0131rma<\/h4>\n<p>Uygulaman\u0131z\u0131 durdurmak veya tamamen kald\u0131rmak i\u00e7in a\u015fa\u011f\u0131daki komutlar\u0131 kullanabilirsiniz:<\/p>\n<p>*   <strong>Uygulamay\u0131 durdurma (konteynerleri silmez):<\/strong><\/p>\n<pre><code class=\"language-bash\">docker-compose stop<\/code><\/pre>\n<p>    Bu komut, \u00e7al\u0131\u015fan t\u00fcm servis konteynerlerini durdurur ancak onlar\u0131 silmez. Daha sonra <code>docker-compose start<\/code> ile tekrar ba\u015flatabilirsiniz.<\/p>\n<p>*   <strong>Uygulamay\u0131 durdurma ve konteynerleri kald\u0131rma (birimleri silmez):<\/strong><\/p>\n<pre><code class=\"language-bash\">docker-compose down<\/code><\/pre>\n<p>    Bu komut, servislerle ili\u015fkili konteynerleri, a\u011flar\u0131 ve varsay\u0131lan birimleri durdurur ve kald\u0131r\u0131r. Ancak, <code>volumes<\/code> b\u00f6l\u00fcm\u00fcnde tan\u0131mlad\u0131\u011f\u0131m\u0131z <code>db_data<\/code> gibi adland\u0131r\u0131lm\u0131\u015f birimleri kald\u0131rmaz. Bu, veritaban\u0131 verilerinizin kal\u0131c\u0131 olmas\u0131n\u0131 sa\u011flar.<\/p>\n<p>*   <strong>Uygulamay\u0131 durdurma ve t\u00fcm bile\u015fenleri kald\u0131rma (birimler dahil):<\/strong><\/p>\n<pre><code class=\"language-bash\">docker-compose down -v<\/code><\/pre>\n<p>    <code> -v<\/code> (volumes) bayra\u011f\u0131, adland\u0131r\u0131lm\u0131\u015f birimler de dahil olmak \u00fczere t\u00fcm birimleri kald\u0131r\u0131r. Bu, uygulaman\u0131n t\u00fcm verilerini ve yap\u0131land\u0131rmas\u0131n\u0131 tamamen siler. \u00dcretim ortamlar\u0131nda dikkatli kullan\u0131lmal\u0131d\u0131r.<\/p>\n<h4>Di\u011fer Faydal\u0131 Komutlar<\/h4>\n<p>*   <strong>Servis g\u00fcnl\u00fcklerini g\u00f6r\u00fcnt\u00fcleme:<\/strong><\/p>\n<pre><code class=\"language-bash\">docker-compose logs [servis_ad\u0131]<\/code><\/pre>\n<p>    \u00d6rne\u011fin, <code>web<\/code> servisinin g\u00fcnl\u00fcklerini g\u00f6rmek i\u00e7in: <code>docker-compose logs web<\/code><\/p>\n<p>*   <strong>Belirli bir servisi yeniden ba\u015flatma:<\/strong><\/p>\n<pre><code class=\"language-bash\">docker-compose restart [servis_ad\u0131]<\/code><\/pre>\n<p>*   <strong>Belirli bir servisin i\u00e7ine komut \u00e7al\u0131\u015ft\u0131rma:<\/strong><\/p>\n<pre><code class=\"language-bash\">docker-compose exec [servis_ad\u0131] [komut]<\/code><\/pre>\n<p>    \u00d6rne\u011fin, PostgreSQL veritaban\u0131 konteynerinin i\u00e7ine girip <code>psql<\/code> komutunu \u00e7al\u0131\u015ft\u0131rmak i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">docker-compose exec db psql -U myuser mydatabase<\/code><\/pre>\n<p>*   <strong>Sadece belirli servisleri ba\u015flatma:<\/strong><\/p>\n<pre><code class=\"language-bash\">docker-compose up -d web<\/code><\/pre>\n<p>    Bu, sadece <code>web<\/code> servisini ve onun ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 (<code>db<\/code> servisi) ba\u015flat\u0131r.<\/p>\n<h3>Ad\u0131m 5: Docker Compose Dosyas\u0131 Yap\u0131s\u0131 ve En \u0130yi Uygulamalar<\/h3>\n<p><code>docker-compose.yml<\/code> dosyas\u0131, Docker Compose&#8217;un g\u00fcc\u00fcn\u00fcn merkezidir. Bu b\u00f6l\u00fcm, dosya yap\u0131s\u0131n\u0131n detaylar\u0131na ve en iyi uygulamalara odaklanacakt\u0131r.<\/p>\n<h4>Versiyonlama<\/h4>\n<p><code>docker-compose.yml<\/code> dosyas\u0131n\u0131n en \u00fcst\u00fcnde <code>version<\/code> anahtar\u0131 bulunur. Bu, Compose dosyas\u0131n\u0131n hangi versiyon format\u0131n\u0131 kulland\u0131\u011f\u0131n\u0131 belirtir.<br \/>\n*   <code>version: '3.x'<\/code> (\u00f6rne\u011fin <code>3.8<\/code>), en g\u00fcncel ve \u00f6nerilen versiyonlard\u0131r. Docker Swarm gibi orkestrasyon ara\u00e7lar\u0131yla uyumluluk sa\u011flar ve bir\u00e7ok yeni \u00f6zelli\u011fi destekler.<\/p>\n<h4>Servisler (<code>services<\/code>)<\/h4>\n<p><code>services<\/code> anahtar\u0131 alt\u0131nda uygulaman\u0131z\u0131n her bir servisini tan\u0131mlars\u0131n\u0131z. Her servis i\u00e7in temel yap\u0131land\u0131rma se\u00e7enekleri \u015funlard\u0131r:<\/p>\n<p>*   <strong><code>image<\/code>:<\/strong> Servisin hangi Docker g\u00f6r\u00fcnt\u00fcs\u00fcnden olu\u015fturulaca\u011f\u0131n\u0131 belirtir (\u00f6rne\u011fin, <code>nginx:latest<\/code>, <code>postgres:13<\/code>).<br \/>\n*   <strong><code>build<\/code>:<\/strong> E\u011fer bir Dockerfile kullanarak \u00f6zel bir g\u00f6r\u00fcnt\u00fc olu\u015fturmak istiyorsan\u0131z kullan\u0131l\u0131r. Bir dizin yolu veya <code>context<\/code> ve <code>dockerfile<\/code> anahtarlar\u0131n\u0131 i\u00e7eren bir nesne olabilir.<br \/>\n*   <strong><code>ports<\/code>:<\/strong> Host makinesindeki portlar\u0131 konteynerdeki portlara e\u015fler (\u00f6rne\u011fin, <code>\"80:80\"<\/code>).<br \/>\n*   <strong><code>volumes<\/code>:<\/strong> Konteyner ile host makinesi aras\u0131nda veya Docker taraf\u0131ndan y\u00f6netilen birimler aras\u0131nda veri payla\u015f\u0131m\u0131n\u0131 sa\u011flar.<br \/>\n    *   <strong>Bind Mounts:<\/strong> <code>.\/nginx\/conf.d:\/etc\/nginx\/conf.d<\/code> gibi, host makinesindeki belirli bir yolu konteynerdeki bir yola ba\u011flar.<br \/>\n    *   <strong>Named Volumes:<\/strong> <code>db_data:\/var\/lib\/postgresql\/data<\/code> gibi, Docker taraf\u0131ndan y\u00f6netilen adland\u0131r\u0131lm\u0131\u015f bir birimi kullan\u0131r.<br \/>\n*   <strong><code>environment<\/code>:<\/strong> Konteyner i\u00e7ine aktar\u0131lacak ortam de\u011fi\u015fkenlerini tan\u0131mlar (\u00f6rne\u011fin, <code>POSTGRES_PASSWORD: mypassword<\/code>). Hassas bilgiler i\u00e7in <code>.env<\/code> dosyas\u0131 kullan\u0131lmas\u0131 \u00f6nerilir.<br \/>\n*   <strong><code>depends_on<\/code>:<\/strong> Servisler aras\u0131ndaki ba\u011f\u0131ml\u0131l\u0131klar\u0131 tan\u0131mlar. \u00d6rne\u011fin, <code>web<\/code> servisinin <code>db<\/code> servisi ba\u015flamadan ba\u015flamamas\u0131n\u0131 sa\u011flar. Bu, servislerin do\u011fru s\u0131rada ba\u015flat\u0131lmas\u0131na yard\u0131mc\u0131 olur.<br \/>\n*   <strong><code>networks<\/code>:<\/strong> Servisin hangi a\u011flara ba\u011flanaca\u011f\u0131n\u0131 belirtir.<br \/>\n*   <strong><code>restart<\/code>:<\/strong> Konteynerin ne zaman yeniden ba\u015flat\u0131laca\u011f\u0131n\u0131 kontrol eder.<br \/>\n    *   <code>no<\/code> (varsay\u0131lan): Konteyner durdu\u011funda yeniden ba\u015flat\u0131lmaz.<br \/>\n    *   <code>always<\/code>: Konteyner durdu\u011funda veya Docker Daemon yeniden ba\u015flat\u0131ld\u0131\u011f\u0131nda her zaman yeniden ba\u015flat\u0131l\u0131r.<br \/>\n    *   <code>on-failure<\/code>: Konteyner bir hata koduyla (s\u0131f\u0131r olmayan bir \u00e7\u0131k\u0131\u015f kodu) durdu\u011funda yeniden ba\u015flat\u0131l\u0131r.<br \/>\n    *   <code>unless-stopped<\/code>: Konteyner manuel olarak durdurulmad\u0131\u011f\u0131 s\u00fcrece her zaman yeniden ba\u015flat\u0131l\u0131r.<\/p>\n<h4>A\u011flar (<code>networks<\/code>)<\/h4>\n<p><code>networks<\/code> anahtar\u0131 alt\u0131nda \u00f6zel a\u011flar tan\u0131mlayabilirsiniz. Varsay\u0131lan olarak, Docker Compose t\u00fcm servisler i\u00e7in bir k\u00f6pr\u00fc a\u011f\u0131 olu\u015fturur, ancak daha karma\u015f\u0131k senaryolar i\u00e7in \u00f6zel a\u011flar tan\u0131mlamak faydal\u0131 olabilir.<\/p>\n<pre><code class=\"language-yaml\">networks:\n  my_custom_network:\n    driver: bridge<\/code><\/pre>\n<p>Ard\u0131ndan servislerinizi bu a\u011fa ba\u011flayabilirsiniz:<\/p>\n<pre><code class=\"language-yaml\">services:\n  web:\n    networks:\n      - my_custom_network\n  db:\n    networks:\n      - my_custom_network<\/code><\/pre>\n<h4>Birimler (Volumes) (<code>volumes<\/code>)<\/h4>\n<p><code>volumes<\/code> anahtar\u0131 alt\u0131nda adland\u0131r\u0131lm\u0131\u015f birimleri tan\u0131mlars\u0131n\u0131z. Bu birimler, konteynerler silinse bile verilerin kal\u0131c\u0131 olmas\u0131n\u0131 sa\u011flar.<\/p>\n<pre><code class=\"language-yaml\">volumes:\n  db_data:\n    # driver: local (varsay\u0131lan)\n    # driver_opts:\n    #   type: nfs\n    #   o: addr=192.168.1.1,rw\n    #   device: :\/path\/to\/share<\/code><\/pre>\n<h4>Ortam De\u011fi\u015fkenleri ve <code>.env<\/code> Dosyas\u0131<\/h4>\n<p>Hassas bilgileri (parolalar, API anahtarlar\u0131) do\u011frudan <code>docker-compose.yml<\/code> dosyas\u0131na yazmak yerine, bunlar\u0131 <code>.env<\/code> ad\u0131nda ayr\u0131 bir dosyada saklamak ve Compose dosyas\u0131nda referans g\u00f6stermek en iyi uygulamad\u0131r.<\/p>\n<p><code>my-app\/.env<\/code> dosyas\u0131:<\/p>\n<pre><code class=\"language-\">POSTGRES_PASSWORD=mysecretpassword<\/code><\/pre>\n<p><code>docker-compose.yml<\/code> dosyas\u0131nda kullan\u0131m\u0131:<\/p>\n<pre><code class=\"language-yaml\">services:\n  db:\n    environment:\n      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} # .env dosyas\u0131ndan okunur<\/code><\/pre>\n<h4>En \u0130yi Uygulamalar<\/h4>\n<p>*   <strong>K\u00fc\u00e7\u00fck ve Odaklanm\u0131\u015f Servisler:<\/strong> Her servisin tek bir sorumlulu\u011fu olmal\u0131. Bu, bak\u0131m\u0131 kolayla\u015ft\u0131r\u0131r ve \u00f6l\u00e7eklenebilirli\u011fi art\u0131r\u0131r.<br \/>\n*   <strong>Veri Kal\u0131c\u0131l\u0131\u011f\u0131 \u0130\u00e7in Birimler Kullanma:<\/strong> Veritabanlar\u0131 ve di\u011fer kal\u0131c\u0131 veriler i\u00e7in adland\u0131r\u0131lm\u0131\u015f birimler kullan\u0131n.<br \/>\n*   <strong>Ortam De\u011fi\u015fkenlerini Ak\u0131ll\u0131ca Y\u00f6netme:<\/strong> Hassas bilgileri <code>.env<\/code> dosyalar\u0131nda veya Docker Secrets gibi daha g\u00fcvenli y\u00f6ntemlerle saklay\u0131n.<br \/>\n*   <strong><code>restart<\/code> Politikalar\u0131n\u0131 Kullanma:<\/strong> Servislerin beklenmedik durumlarda veya sistem yeniden ba\u015flat\u0131ld\u0131\u011f\u0131nda otomatik olarak kurtar\u0131lmas\u0131n\u0131 sa\u011flamak i\u00e7in uygun <code>restart<\/code> politikalar\u0131n\u0131 (<code>always<\/code> veya <code>on-failure<\/code>) kullan\u0131n.<br \/>\n*   <strong>Versiyon Kontrol\u00fc:<\/strong> <code>docker-compose.yml<\/code> dosyan\u0131z\u0131 ve ilgili yap\u0131land\u0131rma dosyalar\u0131n\u0131 (\u00f6rne\u011fin Nginx yap\u0131land\u0131rmalar\u0131) Git gibi bir versiyon kontrol sisteminde saklay\u0131n.<\/p>\n<h3>Ad\u0131m 6: Sorun Giderme ve Yayg\u0131n Hatalar<\/h3>\n<p>Docker Compose ile \u00e7al\u0131\u015f\u0131rken kar\u015f\u0131la\u015fabilece\u011finiz baz\u0131 yayg\u0131n sorunlar ve \u00e7\u00f6z\u00fcmleri:<\/p>\n<p>*   <strong>Port \u00c7ak\u0131\u015fmalar\u0131:<\/strong><br \/>\n    *   <strong>Hata:<\/strong> <code>ERROR: for web Cannot start service web: driver failed programming external connectivity on endpoint...<\/code><br \/>\n    *   <strong>\u00c7\u00f6z\u00fcm:<\/strong> Host makinesinde zaten kullan\u0131lan bir portu e\u015flemeye \u00e7al\u0131\u015f\u0131yorsunuz. <code>docker-compose.yml<\/code> dosyas\u0131ndaki <code>ports<\/code> b\u00f6l\u00fcm\u00fcn\u00fc kontrol edin ve host portunu (ilk say\u0131) hen\u00fcz kullan\u0131lmayan bir portla de\u011fi\u015ftirin. \u00d6rne\u011fin, <code>8080:80<\/code>.<\/p>\n<p>*   <strong>Docker Daemon \u00c7al\u0131\u015fm\u0131yor:<\/strong><br \/>\n    *   <strong>Hata:<\/strong> <code>Cannot connect to the Docker daemon. Is the docker daemon running on this host?<\/code><br \/>\n    *   <strong>\u00c7\u00f6z\u00fcm:<\/strong> Docker servisi \u00e7al\u0131\u015fm\u0131yor. <code>sudo systemctl start docker<\/code> komutuyla servisi ba\u015flat\u0131n ve <code>sudo systemctl enable docker<\/code> ile otomatik ba\u015flamas\u0131n\u0131 sa\u011flay\u0131n.<\/p>\n<p>*   <strong>\u0130zin Hatalar\u0131 (Kullan\u0131c\u0131n\u0131n Docker Grubunda Olmamas\u0131):<\/strong><br \/>\n    *   <strong>Hata:<\/strong> <code>Got permission denied while trying to connect to the Docker daemon socket...<\/code><br \/>\n    *   <strong>\u00c7\u00f6z\u00fcm:<\/strong> Kullan\u0131c\u0131n\u0131z <code>docker<\/code> grubunda de\u011fil veya de\u011fi\u015fiklikler uygulanmad\u0131. <code>sudo usermod -aG docker $USER<\/code> komutunu \u00e7al\u0131\u015ft\u0131r\u0131n ve ard\u0131ndan oturumu kapat\u0131p a\u00e7\u0131n veya <code>newgrp docker<\/code> komutunu kullan\u0131n.<\/p>\n<p>*   <strong>YAML S\u00f6zdizimi Hatalar\u0131:<\/strong><br \/>\n    *   <strong>Hata:<\/strong> <code>ERROR: yaml.scanner.ScannerError: while scanning a simple key<\/code> veya <code>ERROR: Invalid top-level property \"services\".<\/code><br \/>\n    *   <strong>\u00c7\u00f6z\u00fcm:<\/strong> YAML dosyalar\u0131nda girintileme (indentation) \u00e7ok \u00f6nemlidir. Bo\u015fluklar\u0131 do\u011fru kulland\u0131\u011f\u0131n\u0131zdan emin olun. Sekme (tab) yerine bo\u015fluk kullan\u0131n. Bir YAML do\u011frulay\u0131c\u0131 (\u00f6rne\u011fin, online YAML validator) kullanarak dosyan\u0131z\u0131 kontrol edebilirsiniz.<\/p>\n<p>*   <strong>Ba\u011f\u0131ml\u0131l\u0131k Sorunlar\u0131 (Servislerin Ba\u015flamamas\u0131):<\/strong><br \/>\n    *   <strong>Sorun:<\/strong> Bir servis, ba\u011f\u0131ml\u0131 oldu\u011fu ba\u015fka bir servis tamamen haz\u0131r olmadan ba\u015flamaya \u00e7al\u0131\u015f\u0131yor ve hata veriyor. \u00d6rne\u011fin, uygulama servisi veritaban\u0131 ba\u015flamadan veritaban\u0131 ba\u011flant\u0131s\u0131 kurmaya \u00e7al\u0131\u015f\u0131yor.<br \/>\n    <em>   <strong>\u00c7\u00f6z\u00fcm:<\/strong> <code>depends_on<\/code> sadece ba\u015flatma s\u0131ras\u0131n\u0131 garanti eder, servisin <\/em>haz\u0131r* oldu\u011funu garanti etmez. Uygulama kodunuzda yeniden deneme mant\u0131\u011f\u0131 (retry logic) kullanman\u0131z veya Docker Compose&#8217;a <code>healthcheck<\/code> eklemeniz gerekebilir. \u00d6rne\u011fin, veritaban\u0131 ba\u011flant\u0131s\u0131 kurana kadar uygulaman\u0131n beklemesini sa\u011flay\u0131n.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>Bu makalede, Rocky Linux 8 i\u015fletim sistemi \u00fczerine Docker Engine ve Docker Compose&#8217;u nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 ve kullanaca\u011f\u0131n\u0131z\u0131 detayl\u0131 bir \u015fekilde ele ald\u0131k. Ad\u0131m ad\u0131m kurulum s\u00fcre\u00e7lerini, temel Docker Compose komutlar\u0131n\u0131 ve \u00e7oklu konteyner uygulamalar\u0131n\u0131 tan\u0131mlamak i\u00e7in <code>docker-compose.yml<\/code> dosyas\u0131n\u0131n nas\u0131l kullan\u0131laca\u011f\u0131n\u0131 \u00f6\u011frendiniz. Ayr\u0131ca, Docker Compose dosya yap\u0131s\u0131n\u0131n ana bile\u015fenlerini ve en iyi uygulamalar\u0131 inceledik, b\u00f6ylece daha sa\u011flam ve y\u00f6netilebilir Docker Compose projeleri olu\u015fturabilirsiniz.<\/p>\n<p>Docker Compose, geli\u015ftirme ve test ortamlar\u0131nda \u00e7oklu konteyner uygulamalar\u0131n\u0131 h\u0131zl\u0131ca aya\u011fa kald\u0131rmak ve y\u00f6netmek i\u00e7in paha bi\u00e7ilmez bir ara\u00e7t\u0131r. Geli\u015ftiricilerin karma\u015f\u0131k ba\u011f\u0131ml\u0131l\u0131klarla u\u011fra\u015fmak yerine kod yazmaya odaklanmas\u0131n\u0131 sa\u011flar ve uygulama bile\u015fenlerinin tutarl\u0131 bir \u015fekilde da\u011f\u0131t\u0131lmas\u0131n\u0131 garanti eder.<\/p>\n<p>Rocky Linux 8&#8217;in kararl\u0131l\u0131\u011f\u0131 ve Docker Compose&#8217;un esnekli\u011fi bir araya geldi\u011finde, modern uygulama geli\u015ftirme ve da\u011f\u0131t\u0131m s\u00fcre\u00e7leri i\u00e7in g\u00fc\u00e7l\u00fc bir platform sunar. Bu k\u0131lavuzu kullanarak, kendi \u00e7oklu konteyner uygulamalar\u0131n\u0131z\u0131 Rocky Linux 8 \u00fczerinde ba\u015far\u0131yla da\u011f\u0131tabilir ve y\u00f6netebilirsiniz.<\/p>\n<p>Sonraki ad\u0131mlar olarak, Docker Compose&#8217;un daha geli\u015fmi\u015f \u00f6zelliklerini (\u00f6rne\u011fin, \u00f6l\u00e7eklendirme, \u00f6zel a\u011f yap\u0131land\u0131rmalar\u0131, <code>extends<\/code> anahtar\u0131) ke\u015ffedebilir veya konteyner orkestrasyonu i\u00e7in Docker Swarm veya Kubernetes gibi ara\u00e7lar\u0131 inceleyebilirsiniz. Konteyner teknolojileri d\u00fcnyas\u0131 s\u00fcrekli geli\u015fiyor ve Docker Compose bu yolculukta \u00f6nemli bir ba\u015flang\u0131\u00e7 noktas\u0131d\u0131r.<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Rocky Linux 8 \u00dczerine Docker Compose Kurulumu ve Kullan\u0131m\u0131\nRocky Linux 8, CentOS&#8217;un kararl\u0131 ve topluluk destekli bir halefi olarak, sunucu ortaml","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[241],"tags":[],"class_list":{"0":"post-34673","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-linux","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Rocky Linux 8 \u00dczerine Docker Compose Kurulumu ve Kullan\u0131m\u0131 - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/rocky-linux-8-uzerine-docker-compose-kurulumu-ve-kullanimi\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Rocky Linux 8 \u00dczerine Docker Compose Kurulumu ve Kullan\u0131m\u0131\" \/>\n<meta property=\"og:description\" content=\"Rocky Linux 8 \u00dczerine Docker Compose Kurulumu ve Kullan\u0131m\u0131 Rocky Linux 8, CentOS&#039;un kararl\u0131 ve topluluk destekli bir halefi olarak, sunucu ortaml\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/rocky-linux-8-uzerine-docker-compose-kurulumu-ve-kullanimi\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-11-20T11:40:51+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"20 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/rocky-linux-8-uzerine-docker-compose-kurulumu-ve-kullanimi\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/rocky-linux-8-uzerine-docker-compose-kurulumu-ve-kullanimi\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Rocky Linux 8 \u00dczerine Docker Compose Kurulumu ve Kullan\u0131m\u0131\",\"datePublished\":\"2025-11-20T11:40:51+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/rocky-linux-8-uzerine-docker-compose-kurulumu-ve-kullanimi\/\"},\"wordCount\":3300,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Linux\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/rocky-linux-8-uzerine-docker-compose-kurulumu-ve-kullanimi\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/rocky-linux-8-uzerine-docker-compose-kurulumu-ve-kullanimi\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/rocky-linux-8-uzerine-docker-compose-kurulumu-ve-kullanimi\/\",\"name\":\"Rocky Linux 8 \u00dczerine Docker Compose Kurulumu ve Kullan\u0131m\u0131 - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-11-20T11:40:51+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/rocky-linux-8-uzerine-docker-compose-kurulumu-ve-kullanimi\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/rocky-linux-8-uzerine-docker-compose-kurulumu-ve-kullanimi\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/rocky-linux-8-uzerine-docker-compose-kurulumu-ve-kullanimi\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Rocky Linux 8 \u00dczerine Docker Compose Kurulumu ve Kullan\u0131m\u0131\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Rocky Linux 8 \u00dczerine Docker Compose Kurulumu ve Kullan\u0131m\u0131 - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/rocky-linux-8-uzerine-docker-compose-kurulumu-ve-kullanimi\/","og_locale":"tr_TR","og_type":"article","og_title":"Rocky Linux 8 \u00dczerine Docker Compose Kurulumu ve Kullan\u0131m\u0131","og_description":"Rocky Linux 8 \u00dczerine Docker Compose Kurulumu ve Kullan\u0131m\u0131 Rocky Linux 8, CentOS'un kararl\u0131 ve topluluk destekli bir halefi olarak, sunucu ortaml","og_url":"https:\/\/fatihsoysal.com\/blog\/rocky-linux-8-uzerine-docker-compose-kurulumu-ve-kullanimi\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-11-20T11:40:51+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"20 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/rocky-linux-8-uzerine-docker-compose-kurulumu-ve-kullanimi\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/rocky-linux-8-uzerine-docker-compose-kurulumu-ve-kullanimi\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Rocky Linux 8 \u00dczerine Docker Compose Kurulumu ve Kullan\u0131m\u0131","datePublished":"2025-11-20T11:40:51+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/rocky-linux-8-uzerine-docker-compose-kurulumu-ve-kullanimi\/"},"wordCount":3300,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Linux"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/rocky-linux-8-uzerine-docker-compose-kurulumu-ve-kullanimi\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/rocky-linux-8-uzerine-docker-compose-kurulumu-ve-kullanimi\/","url":"https:\/\/fatihsoysal.com\/blog\/rocky-linux-8-uzerine-docker-compose-kurulumu-ve-kullanimi\/","name":"Rocky Linux 8 \u00dczerine Docker Compose Kurulumu ve Kullan\u0131m\u0131 - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-11-20T11:40:51+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/rocky-linux-8-uzerine-docker-compose-kurulumu-ve-kullanimi\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/rocky-linux-8-uzerine-docker-compose-kurulumu-ve-kullanimi\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/rocky-linux-8-uzerine-docker-compose-kurulumu-ve-kullanimi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Rocky Linux 8 \u00dczerine Docker Compose Kurulumu ve Kullan\u0131m\u0131"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/34673","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=34673"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/34673\/revisions"}],"predecessor-version":[{"id":34674,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/34673\/revisions\/34674"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=34673"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=34673"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=34673"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}