{"id":31941,"date":"2025-10-15T20:41:09","date_gmt":"2025-10-15T17:41:09","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=31941"},"modified":"2025-10-15T20:41:09","modified_gmt":"2025-10-15T17:41:09","slug":"nginxi-docker-konteynerinde-ubuntu-22-04-uzerinde-calistirma","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/nginxi-docker-konteynerinde-ubuntu-22-04-uzerinde-calistirma\/","title":{"rendered":"Nginx&#8217;i Docker Konteynerinde Ubuntu 22.04 \u00dczerinde \u00c7al\u0131\u015ft\u0131rma"},"content":{"rendered":"<p><body><\/p>\n<h2>Nginx&#8217;i Docker Konteynerinde Ubuntu 22.04 \u00dczerinde \u00c7al\u0131\u015ft\u0131rma<\/h2>\n<h3>Giri\u015f<\/h3>\n<p>G\u00fcn\u00fcm\u00fcz\u00fcn h\u0131zl\u0131 geli\u015fen yaz\u0131l\u0131m d\u00fcnyas\u0131nda, uygulamalar\u0131 tutarl\u0131 ve izole ortamlarda da\u011f\u0131tmak ve y\u00f6netmek kritik bir \u00f6neme sahiptir. Bu noktada Docker, uygulamalar\u0131 ve ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 tek bir pakette (konteyner) toplama yetene\u011fi sayesinde geli\u015ftiriciler ve sistem y\u00f6neticileri i\u00e7in vazge\u00e7ilmez bir ara\u00e7 haline gelmi\u015ftir. Nginx ise, y\u00fcksek performansl\u0131, a\u00e7\u0131k kaynakl\u0131 bir web sunucusu ve ters proxy sunucusu olarak pop\u00fclerli\u011fini kan\u0131tlam\u0131\u015ft\u0131r. Milyonlarca web sitesi, \u00f6zellikle y\u00fcksek trafikli olanlar, Nginx&#8217;in h\u0131z\u0131ndan, \u00f6l\u00e7eklenebilirli\u011finden ve d\u00fc\u015f\u00fck kaynak t\u00fcketiminden faydalanmaktad\u0131r.<\/p>\n<p>Ubuntu 22.04, g\u00fcncel ve kararl\u0131 bir Linux da\u011f\u0131t\u0131m\u0131 olarak, Docker ve Nginx gibi modern teknolojileri \u00e7al\u0131\u015ft\u0131rmak i\u00e7in sa\u011flam bir temel sunar. Bu makalede, Nginx&#8217;i bir Docker konteyneri i\u00e7inde Ubuntu 22.04 i\u015fletim sistemi \u00fczerinde nas\u0131l \u00e7al\u0131\u015ft\u0131raca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m detayl\u0131 bir \u015fekilde anlataca\u011f\u0131z. Bu yakla\u015f\u0131m, Nginx&#8217;i ana sistemden izole ederek ba\u011f\u0131ml\u0131l\u0131k \u00e7ak\u0131\u015fmalar\u0131n\u0131 \u00f6nler, da\u011f\u0131t\u0131m\u0131 kolayla\u015ft\u0131r\u0131r ve farkl\u0131 ortamlarda tutarl\u0131 bir davran\u0131\u015f sa\u011flar. Ayr\u0131ca, \u00f6zel konfig\u00fcrasyonlar kullanmaktan Docker Compose ile y\u00f6netime kadar \u00e7e\u015fitli senaryolar\u0131 ele alarak, okuyucular\u0131n bu konudaki bilgi birikimini derinle\u015ftirmeyi hedefliyoruz.<\/p>\n<h3>\u00d6n Ko\u015fullar<\/h3>\n<p>Bu makaledeki ad\u0131mlar\u0131 takip edebilmek i\u00e7in a\u015fa\u011f\u0131daki \u00f6n ko\u015fullar\u0131n sa\u011flanm\u0131\u015f olmas\u0131 gerekmektedir:<\/p>\n<p>*   <strong>Ubuntu 22.04 \u0130\u015fletim Sistemi:<\/strong> Makalede anlat\u0131lan t\u00fcm komutlar ve ad\u0131mlar Ubuntu 22.04 \u00fczerinde test edilmi\u015ftir. Farkl\u0131 bir Linux da\u011f\u0131t\u0131m\u0131 kullan\u0131yorsan\u0131z, baz\u0131 komutlar veya paket isimleri farkl\u0131l\u0131k g\u00f6sterebilir.<br \/>\n*   <strong>Sudo Ayr\u0131cal\u0131klar\u0131:<\/strong> Kurulum ve yap\u0131land\u0131rma ad\u0131mlar\u0131 i\u00e7in <code>sudo<\/code> ayr\u0131cal\u0131klar\u0131na sahip bir kullan\u0131c\u0131 hesab\u0131na ihtiyac\u0131n\u0131z olacakt\u0131r. Genellikle, yeni bir Ubuntu kurulumunda olu\u015fturulan ilk kullan\u0131c\u0131 bu ayr\u0131cal\u0131klara sahiptir.<br \/>\n*   <strong>\u0130nternet Ba\u011flant\u0131s\u0131:<\/strong> Docker paketlerini indirmek ve Nginx Docker imaj\u0131n\u0131 \u00e7ekmek i\u00e7in aktif bir internet ba\u011flant\u0131s\u0131 gereklidir.<br \/>\n*   <strong>Temel Linux Komut Bilgisi:<\/strong> Terminalde temel komutlar\u0131 (\u00f6rne\u011fin, <code>cd<\/code>, <code>mkdir<\/code>, <code>nano<\/code> veya <code>vi<\/code>) kullanabilme becerisi, bu makaledeki ad\u0131mlar\u0131 uygulaman\u0131zda size yard\u0131mc\u0131 olacakt\u0131r.<\/p>\n<p>Bu \u00f6n ko\u015fullar sa\u011fland\u0131\u011f\u0131nda, Nginx&#8217;i Docker konteyneri i\u00e7inde \u00e7al\u0131\u015ft\u0131rmak i\u00e7in haz\u0131rs\u0131n\u0131z demektir.<\/p>\n<h3>Docker Kurulumu<\/h3>\n<p>Nginx&#8217;i bir Docker konteynerinde \u00e7al\u0131\u015ft\u0131rmadan \u00f6nce, sisteminize Docker Engine&#8217;i kurman\u0131z gerekmektedir. A\u015fa\u011f\u0131daki ad\u0131mlar, Docker&#8217;\u0131 Ubuntu 22.04 \u00fczerine g\u00fcvenli ve do\u011fru bir \u015fekilde kurman\u0131z\u0131 sa\u011flayacakt\u0131r.<\/p>\n<h4>Sistem G\u00fcncelleme<\/h4>\n<p>Kuruluma ba\u015flamadan \u00f6nce, paket listelerinizi g\u00fcncellemek ve mevcut paketleri y\u00fckseltmek iyi bir uygulamad\u0131r. Bu, herhangi bir potansiyel ba\u011f\u0131ml\u0131l\u0131k sorununu \u00f6nlemeye yard\u0131mc\u0131 olur.<\/p>\n<pre><code class=\"language-bash\">sudo apt update\nsudo apt upgrade -y<\/code><\/pre>\n<h4>Gerekli Paketlerin Kurulumu<\/h4>\n<p>Docker&#8217;\u0131n HTTPS \u00fczerinden depolarla ileti\u015fim kurabilmesi i\u00e7in baz\u0131 gerekli paketleri kurman\u0131z gerekmektedir.<\/p>\n<pre><code class=\"language-bash\">sudo apt install ca-certificates curl gnupg lsb-release -y<\/code><\/pre>\n<p>*   <code>ca-certificates<\/code>: G\u00fcvenli bir \u015fekilde SSL\/TLS ba\u011flant\u0131lar\u0131 kurmak i\u00e7in gereklidir.<br \/>\n*   <code>curl<\/code>: URL&#8217;lerden veri transfer etmek i\u00e7in kullan\u0131lan bir komut sat\u0131r\u0131 arac\u0131d\u0131r. Docker&#8217;\u0131n GPG anahtar\u0131n\u0131 indirmek i\u00e7in kullanaca\u011f\u0131z.<br \/>\n*   <code>gnupg<\/code>: GPG anahtarlar\u0131n\u0131 y\u00f6netmek i\u00e7in kullan\u0131l\u0131r.<br \/>\n*   <code>lsb-release<\/code>: \u0130\u015fletim sistemi s\u00fcr\u00fcm\u00fc hakk\u0131nda bilgi sa\u011flar, bu da Docker deposunu do\u011fru bir \u015fekilde eklemek i\u00e7in gereklidir.<\/p>\n<h4>Docker GPG Anahtar\u0131n\u0131 ve Depoyu Ekleme<\/h4>\n<p>Docker, paketlerinin b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fc sa\u011flamak i\u00e7in GPG anahtarlar\u0131 kullan\u0131r. Bu anahtar\u0131 ekleyerek, indirdi\u011finiz paketlerin resmi ve de\u011fi\u015ftirilmemi\u015f oldu\u011fundan emin olursunuz.<\/p>\n<p>\u00d6ncelikle, Docker&#8217;\u0131n resmi GPG anahtar\u0131n\u0131 sisteminize ekleyin:<\/p>\n<pre><code class=\"language-bash\">sudo mkdir -p \/etc\/apt\/keyrings\ncurl -fsSL https:\/\/download.docker.com\/linux\/ubuntu\/gpg | sudo gpg --dearmor -o \/etc\/apt\/keyrings\/docker.gpg<\/code><\/pre>\n<p>Ard\u0131ndan, Docker deposunu APT kaynak listenize ekleyin. Bu, sisteminizin Docker paketlerini resmi Docker deposundan \u00e7ekmesini sa\u011flayacakt\u0131r.<\/p>\n<pre><code class=\"language-bash\">echo \\\n  \"deb [arch=$(dpkg --print-architecture) signed-by=\/etc\/apt\/keyrings\/docker.gpg] https:\/\/download.docker.com\/linux\/ubuntu \\\n  $(lsb_release -cs) stable\" | sudo tee \/etc\/apt\/sources.list.d\/docker.list > \/dev\/null<\/code><\/pre>\n<p>Bu komut, sisteminizin mimarisine ve Ubuntu s\u00fcr\u00fcm\u00fcne uygun Docker deposunu ekler.<\/p>\n<p>Depoyu ekledikten sonra, yeni depoyu tan\u0131mak i\u00e7in paket listelerinizi tekrar g\u00fcncelleyin:<\/p>\n<pre><code class=\"language-bash\">sudo apt update<\/code><\/pre>\n<h4>Docker Kurulumu<\/h4>\n<p>Art\u0131k Docker Engine&#8217;i, Containerd&#8217;yi ve Docker Compose&#8217;u kurmaya haz\u0131rs\u0131n\u0131z.<\/p>\n<pre><code class=\"language-bash\">sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y<\/code><\/pre>\n<p>*   <code>docker-ce<\/code>: Docker Engine (Community Edition) ana paketidir.<br \/>\n*   <code>docker-ce-cli<\/code>: Docker komut sat\u0131r\u0131 aray\u00fcz\u00fcd\u00fcr.<br \/>\n*   <code>containerd.io<\/code>: Konteyner ya\u015fam d\u00f6ng\u00fcs\u00fcn\u00fc y\u00f6neten bir konteyner \u00e7al\u0131\u015fma zaman\u0131d\u0131r.<br \/>\n*   <code>docker-buildx-plugin<\/code>: Docker&#8217;\u0131n yeni nesil build ara\u00e7lar\u0131n\u0131 sa\u011flar.<br \/>\n*   <code>docker-compose-plugin<\/code>: Docker Compose&#8217;un yeni CLI eklentisi s\u00fcr\u00fcm\u00fcd\u00fcr.<\/p>\n<h4>Docker Servisini Do\u011frulama<\/h4>\n<p>Kurulum tamamland\u0131ktan sonra, Docker servisinin \u00e7al\u0131\u015f\u0131p \u00e7al\u0131\u015fmad\u0131\u011f\u0131n\u0131 kontrol edebilirsiniz:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl status docker<\/code><\/pre>\n<p>\u00c7\u0131kt\u0131da <code>active (running)<\/code> ifadesini g\u00f6rmelisiniz.<\/p>\n<p>Docker&#8217;\u0131n do\u011fru \u015fekilde \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 test etmek i\u00e7in, bir test konteyneri \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo docker run hello-world<\/code><\/pre>\n<p>Bu komut, Docker&#8217;\u0131n bir test imaj\u0131n\u0131 \u00e7ekip bir konteynerde \u00e7al\u0131\u015ft\u0131rmas\u0131 ve &#8220;Hello from Docker!&#8221; mesaj\u0131n\u0131 g\u00f6r\u00fcnt\u00fclemesiyle sonu\u00e7lanmal\u0131d\u0131r.<\/p>\n<h4>Kullan\u0131c\u0131y\u0131 Docker Grubuna Ekleme (\u0130ste\u011fe Ba\u011fl\u0131 ama \u00d6nerilir)<\/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.<\/p>\n<pre><code class=\"language-bash\">sudo usermod -aG docker $USER<\/code><\/pre>\n<p>Bu komutu \u00e7al\u0131\u015ft\u0131rd\u0131ktan sonra, de\u011fi\u015fikli\u011fin etkili olmas\u0131 i\u00e7in oturumu kapat\u0131p tekrar a\u00e7man\u0131z veya sisteminizi yeniden ba\u015flatman\u0131z gerekmektedir:<\/p>\n<pre><code class=\"language-bash\">newgrp docker<\/code><\/pre>\n<p><code>newgrp docker<\/code> komutu, ge\u00e7erli kabuk oturumunuzda <code>docker<\/code> grubunun yetkilerini hemen uygulaman\u0131z\u0131 sa\u011flar. Ard\u0131ndan, <code>sudo<\/code> kullanmadan Docker komutlar\u0131n\u0131 \u00e7al\u0131\u015ft\u0131r\u0131p \u00e7al\u0131\u015ft\u0131ramad\u0131\u011f\u0131n\u0131z\u0131 test edebilirsiniz:<\/p>\n<pre><code class=\"language-bash\">docker run hello-world<\/code><\/pre>\n<p>E\u011fer <code>sudo<\/code> olmadan \u00e7al\u0131\u015f\u0131yorsa, kurulum ba\u015far\u0131l\u0131 demektir.<\/p>\n<h3>Nginx Docker Konteynerini \u00c7al\u0131\u015ft\u0131rma<\/h3>\n<p>Docker&#8217;\u0131 sisteminize ba\u015far\u0131yla kurduktan sonra, Nginx&#8217;i bir Docker konteyneri i\u00e7inde \u00e7al\u0131\u015ft\u0131rmaya haz\u0131rs\u0131n\u0131z demektir. Bu b\u00f6l\u00fcmde, Nginx imaj\u0131n\u0131 \u00e7ekme, basit bir konteyner ba\u015flatma ve temel do\u011frulama ad\u0131mlar\u0131n\u0131 ele alaca\u011f\u0131z.<\/p>\n<h4>Nginx Docker \u0130maj\u0131n\u0131 \u00c7ekme<\/h4>\n<p>Docker Hub, milyonlarca Docker imaj\u0131n\u0131 bar\u0131nd\u0131ran bir bulut tabanl\u0131 kay\u0131t defteridir. Nginx&#8217;in resmi imaj\u0131 da burada mevcuttur. Nginx imaj\u0131n\u0131 yerel sisteminize \u00e7ekmek i\u00e7in <code>docker pull<\/code> komutunu kullan\u0131n:<\/p>\n<pre><code class=\"language-bash\">docker pull nginx<\/code><\/pre>\n<p>Bu komut, Nginx&#8217;in en son (latest) kararl\u0131 s\u00fcr\u00fcm\u00fcn\u00fc indirecektir. Belirli bir s\u00fcr\u00fcm\u00fc \u00e7ekmek isterseniz, <code>nginx:1.24<\/code> gibi etiketleri kullanabilirsiniz. \u00d6rne\u011fin: <code>docker pull nginx:1.24<\/code>. Genellikle, <code>latest<\/code> etiketi yeterlidir, ancak \u00fcretim ortamlar\u0131nda belirli bir s\u00fcr\u00fcm\u00fc kilitlemek daha g\u00fcvenli olabilir.<\/p>\n<p>\u0130maj\u0131n ba\u015far\u0131yla \u00e7ekildi\u011fini do\u011frulamak i\u00e7in, sisteminizdeki t\u00fcm Docker imajlar\u0131n\u0131 listeleyebilirsiniz:<\/p>\n<pre><code class=\"language-bash\">docker images<\/code><\/pre>\n<p>\u00c7\u0131kt\u0131da <code>nginx<\/code> imaj\u0131n\u0131 g\u00f6rmelisiniz.<\/p>\n<h4>Nginx Konteynerini Ba\u015flatma (Basit \u00c7al\u0131\u015ft\u0131rma)<\/h4>\n<p>Nginx imaj\u0131n\u0131 \u00e7ektikten sonra, ondan bir konteyner ba\u015flatabilirsiniz. En basit haliyle, Nginx&#8217;i varsay\u0131lan ayarlarla \u00e7al\u0131\u015ft\u0131rmak i\u00e7in a\u015fa\u011f\u0131daki komutu kullan\u0131r\u0131z:<\/p>\n<pre><code class=\"language-bash\">docker run -d -p 80:80 --name my-nginx nginx<\/code><\/pre>\n<p>Bu komuttaki parametreleri inceleyelim:<\/p>\n<p>*   <code>-d<\/code> (detached mode): Konteyneri arka planda \u00e7al\u0131\u015ft\u0131r\u0131r. Terminalinizi serbest b\u0131rak\u0131r ve konteynerin \u00e7\u0131kt\u0131s\u0131n\u0131 do\u011frudan ekrana basmaz.<br \/>\n*   <code>-p 80:80<\/code>: Port e\u015flemesi yapar. Bu, ana makinenizin (Ubuntu 22.04) 80 numaral\u0131 portuna gelen istekleri, konteynerin i\u00e7indeki Nginx&#8217;in dinledi\u011fi 80 numaral\u0131 porta y\u00f6nlendirir. \u0130lk 80 ana makine portu, ikinci 80 konteyner portudur. \u0130sterseniz ana makine portunu de\u011fi\u015ftirebilirsiniz, \u00f6rne\u011fin <code>-p 8080:80<\/code> ile Nginx&#8217;e 8080 portundan eri\u015febilirsiniz.<br \/>\n*   <code>--name my-nginx<\/code>: Konteynerinize <code>my-nginx<\/code> ad\u0131n\u0131 verir. Bu, konteyneri daha sonra y\u00f6netirken (durdurma, ba\u015flatma, kald\u0131rma) kolayca referans alman\u0131z\u0131 sa\u011flar. Bir isim belirtmezseniz, Docker otomatik olarak rastgele bir isim atar.<br \/>\n*   <code>nginx<\/code>: \u00c7al\u0131\u015ft\u0131r\u0131lacak Docker imaj\u0131n\u0131n ad\u0131d\u0131r.<\/p>\n<h4>\u00c7al\u0131\u015fan Nginx Konteynerini Do\u011frulama<\/h4>\n<p>Konteyneri ba\u015flatt\u0131ktan sonra, \u00e7al\u0131\u015f\u0131r durumda olup olmad\u0131\u011f\u0131n\u0131 kontrol edebilirsiniz:<\/p>\n<pre><code class=\"language-bash\">docker ps<\/code><\/pre>\n<p>Bu komut, \u00e7al\u0131\u015fan t\u00fcm Docker konteynerlerini listeler. \u00c7\u0131kt\u0131da <code>my-nginx<\/code> ad\u0131nda, <code>nginx<\/code> imaj\u0131ndan olu\u015fturulmu\u015f ve 80 numaral\u0131 portu e\u015flenmi\u015f bir konteyner g\u00f6rmelisiniz.<\/p>\n<p>\u015eimdi bir web taray\u0131c\u0131s\u0131 a\u00e7\u0131n ve sunucunuzun IP adresini veya <code>localhost<\/code> adresini ziyaret edin:<\/p>\n<pre><code class=\"language-\">http:\/\/localhost<\/code><\/pre>\n<p>veya sunucunuzun IP adresi:<\/p>\n<pre><code class=\"language-\">http:\/\/SUNUCU_IP_ADRESINIZ<\/code><\/pre>\n<p>Nginx&#8217;in varsay\u0131lan &#8220;Welcome to nginx!&#8221; sayfas\u0131n\u0131 g\u00f6rmelisiniz. Bu, Nginx&#8217;in Docker konteyneri i\u00e7inde ba\u015far\u0131yla \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 g\u00f6sterir.<\/p>\n<h4>Nginx Konteynerini Durdurma ve Kald\u0131rma<\/h4>\n<p>Bir konteyneri durdurmak veya kald\u0131rmak i\u00e7in ad\u0131n\u0131 veya ID&#8217;sini kullanabilirsiniz.<\/p>\n<p>Konteyneri durdurmak i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">docker stop my-nginx<\/code><\/pre>\n<p>Durdurulan konteyner hala sisteminizde mevcuttur ancak \u00e7al\u0131\u015fm\u0131yordur. <code>docker ps -a<\/code> komutuyla t\u00fcm konteynerleri (\u00e7al\u0131\u015fan ve durdurulan) g\u00f6rebilirsiniz.<\/p>\n<p>Konteyneri tamamen kald\u0131rmak i\u00e7in (durdurulduktan sonra):<\/p>\n<pre><code class=\"language-bash\">docker rm my-nginx<\/code><\/pre>\n<p>E\u011fer \u00e7al\u0131\u015fan bir konteyneri kald\u0131rmak isterseniz, <code>-f<\/code> (force) bayra\u011f\u0131n\u0131 kullanabilirsiniz, ancak \u00f6nce durdurmak daha iyi bir uygulamad\u0131r:<\/p>\n<pre><code class=\"language-bash\">docker rm -f my-nginx<\/code><\/pre>\n<p>Bu ad\u0131mlar, Nginx&#8217;i Docker konteynerinde temel seviyede nas\u0131l \u00e7al\u0131\u015ft\u0131raca\u011f\u0131n\u0131z\u0131 g\u00f6stermektedir. Ancak \u00e7o\u011fu zaman, \u00f6zel Nginx yap\u0131land\u0131rmalar\u0131na veya web i\u00e7eri\u011fine ihtiyac\u0131n\u0131z olacakt\u0131r. Bir sonraki b\u00f6l\u00fcmde bu konuyu ele alaca\u011f\u0131z.<\/p>\n<h3>\u00d6zel Nginx Konfig\u00fcrasyonu Kullanma<\/h3>\n<p>Varsay\u0131lan Nginx kurulumu \u00e7o\u011fu senaryo i\u00e7in yeterli olmayabilir. Kendi web sitenizi bar\u0131nd\u0131rmak, ters proxy kurmak veya SSL\/TLS yap\u0131land\u0131rmak gibi durumlarda \u00f6zel Nginx konfig\u00fcrasyon dosyalar\u0131na ihtiyac\u0131n\u0131z olacakt\u0131r. Docker, bu t\u00fcr \u00f6zel konfig\u00fcrasyonlar\u0131 kolayca entegre etmenizi sa\u011flayan &#8220;volume mounting&#8221; \u00f6zelli\u011fini sunar. Bu b\u00f6l\u00fcmde, kendi Nginx konfig\u00fcrasyonunuzu ve statik web i\u00e7eri\u011finizi nas\u0131l kullanaca\u011f\u0131n\u0131z\u0131 g\u00f6sterece\u011fiz.<\/p>\n<h4>Nginx Konfig\u00fcrasyon Dosyas\u0131 Olu\u015fturma<\/h4>\n<p>\u0130lk olarak, Nginx i\u00e7in \u00f6zel bir konfig\u00fcrasyon dosyas\u0131 olu\u015fturmal\u0131y\u0131z. Nginx&#8217;in Docker imaj\u0131, genellikle <code>\/etc\/nginx\/conf.d\/default.conf<\/code> dosyas\u0131n\u0131 kullanarak sunucu bloklar\u0131n\u0131 yap\u0131land\u0131r\u0131r. Kendi \u00f6zel konfig\u00fcrasyonumuzu bu yola ba\u011flayaca\u011f\u0131z.<\/p>\n<p>Yerel sisteminizde, \u00f6rne\u011fin ev dizininizde bir <code>nginx-config<\/code> klas\u00f6r\u00fc olu\u015ftural\u0131m:<\/p>\n<pre><code class=\"language-bash\">mkdir ~\/nginx-config<\/code><\/pre>\n<p>\u015eimdi bu klas\u00f6r\u00fcn i\u00e7ine <code>default.conf<\/code> ad\u0131nda bir dosya olu\u015ftural\u0131m ve basit bir sunucu blo\u011fu tan\u0131mlayal\u0131m. Bu \u00f6rnekte, Nginx&#8217;in varsay\u0131lan web k\u00f6k dizini olan <code>\/usr\/share\/nginx\/html<\/code> i\u00e7indeki <code>index.html<\/code> dosyas\u0131n\u0131 sunmas\u0131n\u0131 sa\u011flayaca\u011f\u0131z.<\/p>\n<pre><code class=\"language-bash\">nano ~\/nginx-config\/default.conf<\/code><\/pre>\n<p>A\u015fa\u011f\u0131daki i\u00e7eri\u011fi dosyaya yap\u0131\u015ft\u0131r\u0131n:<\/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 index.htm;\n    }\n\n    error_page   500 502 503 504  \/50x.html;\n    location = \/50x.html {\n        root   \/usr\/share\/nginx\/html;\n    }\n}<\/code><\/pre>\n<p>Bu basit konfig\u00fcrasyon, 80 numaral\u0131 porttan gelen istekleri dinler ve <code>\/usr\/share\/nginx\/html<\/code> dizinindeki dosyalar\u0131 sunar. <code>Ctrl+X<\/code>, <code>Y<\/code> ve <code>Enter<\/code> tu\u015flar\u0131na basarak dosyay\u0131 kaydedin ve kapat\u0131n.<\/p>\n<h4>Statik Web \u0130\u00e7eri\u011fi Olu\u015fturma<\/h4>\n<p>Nginx&#8217;in sunaca\u011f\u0131 bir <code>index.html<\/code> dosyas\u0131na ihtiyac\u0131m\u0131z var. Bunu da ayn\u0131 \u015fekilde yerel sistemimizde bir klas\u00f6rde olu\u015ftural\u0131m.<\/p>\n<pre><code class=\"language-bash\">mkdir ~\/nginx-html\nnano ~\/nginx-html\/index.html<\/code><\/pre>\n<p>A\u015fa\u011f\u0131daki i\u00e7eri\u011fi <code>index.html<\/code> dosyas\u0131na yap\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code class=\"language-html\"><!DOCTYPE html>\n<html>\n<head>\n<title>Nginx Docker Konteynerinde<\/title>\n<style>\n    body {\n        width: 35em;\n        margin: 0 auto;\n        font-family: Tahoma, Verdana, Arial, sans-serif;\n    }\n<\/style>\n<\/head>\n<body>\n\n<p>Bu sayfa, \u00f6zel bir Nginx konfig\u00fcrasyonu ve statik HTML i\u00e7eri\u011fi kullan\u0131larak Docker konteyneri i\u00e7inden sunulmaktad\u0131r.<\/p>\n<p>Ba\u015far\u0131l\u0131 bir \u015fekilde yap\u0131land\u0131rd\u0131n\u0131z!<\/p>\n<\/body>\n<\/html><\/code><\/pre>\n<p>Kaydedin ve kapat\u0131n. Art\u0131k Nginx&#8217;in kullanaca\u011f\u0131 \u00f6zel bir konfig\u00fcrasyon dosyas\u0131na ve statik bir web sayfas\u0131na sahibiz.<\/p>\n<h4>\u00d6zel Konfig\u00fcrasyon ile Nginx Konteynerini \u00c7al\u0131\u015ft\u0131rma<\/h4>\n<p>\u015eimdi bu dosyalar\u0131 Docker konteynerine &#8220;volume mounting&#8221; (cilt ba\u011flama) kullanarak ba\u011flayaca\u011f\u0131z. Bu, yerel sistemimizdeki dosyalar\u0131n konteynerin belirli bir yoluna yans\u0131t\u0131lmas\u0131n\u0131 sa\u011flar. B\u00f6ylece, yerel dosyalarda yapt\u0131\u011f\u0131n\u0131z de\u011fi\u015fiklikler konteynerde de an\u0131nda etkili olur.<\/p>\n<p>\u00d6nceki Nginx konteynerini durdurup kald\u0131ral\u0131m (e\u011fer \u00e7al\u0131\u015f\u0131yorsa):<\/p>\n<pre><code class=\"language-bash\">docker stop my-nginx\ndocker rm my-nginx<\/code><\/pre>\n<p>\u015eimdi \u00f6zel konfig\u00fcrasyon ve i\u00e7erikle yeni bir Nginx konteyneri ba\u015flatal\u0131m:<\/p>\n<pre><code class=\"language-bash\">docker run -d \\\n  -p 80:80 \\\n  --name custom-nginx \\\n  -v ~\/nginx-config\/default.conf:\/etc\/nginx\/conf.d\/default.conf \\\n  -v ~\/nginx-html:\/usr\/share\/nginx\/html \\\n  nginx<\/code><\/pre>\n<p>Bu komuttaki yeni parametreleri inceleyelim:<\/p>\n<p>*   <code>-v ~\/nginx-config\/default.conf:\/etc\/nginx\/conf.d\/default.conf<\/code>: Bu k\u0131s\u0131m, yerel sistemimizdeki <code>~\/nginx-config\/default.conf<\/code> dosyas\u0131n\u0131, konteynerin i\u00e7indeki <code>\/etc\/nginx\/conf.d\/default.conf<\/code> dosyas\u0131na ba\u011flar. Nginx, genellikle bu dizindeki <code>.conf<\/code> uzant\u0131l\u0131 dosyalar\u0131 otomatik olarak y\u00fckler.<br \/>\n*   <code>-v ~\/nginx-html:\/usr\/share\/nginx\/html<\/code>: Bu k\u0131s\u0131m ise yerel sistemimizdeki <code>~\/nginx-html<\/code> dizinini, konteynerin i\u00e7indeki <code>\/usr\/share\/nginx\/html<\/code> dizinine ba\u011flar. Nginx&#8217;in varsay\u0131lan web k\u00f6k dizini buras\u0131d\u0131r.<\/p>\n<p><strong>\u00d6nemli Not:<\/strong> <code>-v<\/code> parametresinde yerel yollar i\u00e7in mutlak yollar\u0131 kullanmak daha g\u00fcvenlidir. <code>~<\/code> yerine <code>\/home\/kullanici_adiniz<\/code> gibi tam yolu yazabilirsiniz. \u00d6rne\u011fin: <code>-v \/home\/kullanici_adiniz\/nginx-config\/default.conf:\/etc\/nginx\/conf.d\/default.conf<\/code>.<\/p>\n<h4>\u00d6zel Konfig\u00fcrasyonu Do\u011frulama<\/h4>\n<p>Konteynerin \u00e7al\u0131\u015f\u0131r durumda oldu\u011funu kontrol edin:<\/p>\n<pre><code class=\"language-bash\">docker ps<\/code><\/pre>\n<p>\u015eimdi bir web taray\u0131c\u0131s\u0131 a\u00e7\u0131n ve <code>http:\/\/localhost<\/code> adresini ziyaret edin. Bu sefer Nginx&#8217;in varsay\u0131lan &#8220;Welcome to nginx!&#8221; sayfas\u0131 yerine, kendi olu\u015fturdu\u011funuz &#8220;Merhaba Docker Nginx!&#8221; ba\u015fl\u0131kl\u0131 sayfay\u0131 g\u00f6rmelisiniz. Bu, Nginx&#8217;in \u00f6zel konfig\u00fcrasyon dosyan\u0131z\u0131 ve statik web i\u00e7eri\u011finizi ba\u015far\u0131yla kulland\u0131\u011f\u0131 anlam\u0131na gelir.<\/p>\n<p>E\u011fer Nginx konfig\u00fcrasyonunuzda bir hata varsa, konteyner ba\u015flamayabilir veya hata verebilir. Konteynerin loglar\u0131n\u0131 kontrol etmek i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">docker logs custom-nginx<\/code><\/pre>\n<p>Bu komut, Nginx&#8217;in ba\u015flarken kar\u015f\u0131la\u015ft\u0131\u011f\u0131 sorunlar\u0131 veya \u00e7al\u0131\u015fma zaman\u0131ndaki \u00e7\u0131kt\u0131lar\u0131 g\u00f6rmenizi sa\u011flar. Konfig\u00fcrasyonunuzu de\u011fi\u015ftirmeniz gerekirse, yerel dosyan\u0131z\u0131 d\u00fczenleyin ve konteyneri yeniden ba\u015flat\u0131n:<\/p>\n<pre><code class=\"language-bash\">docker restart custom-nginx<\/code><\/pre>\n<p>Bu b\u00f6l\u00fcm, Nginx&#8217;i kendi \u00f6zel yap\u0131land\u0131rman\u0131z ve i\u00e7eri\u011finizle Docker konteynerinde nas\u0131l \u00e7al\u0131\u015ft\u0131raca\u011f\u0131n\u0131z\u0131 g\u00f6sterdi. Bu yakla\u015f\u0131m, esneklik sa\u011flar ve uygulamalar\u0131n\u0131z\u0131n gereksinimlerine g\u00f6re Nginx&#8217;i tamamen \u00f6zelle\u015ftirmenize olanak tan\u0131r.<\/p>\n<h3>Docker Compose ile Nginx Y\u00f6netimi<\/h3>\n<p>Birden fazla Docker konteynerini (\u00f6rne\u011fin, Nginx, bir uygulama sunucusu ve bir veritaban\u0131) ayn\u0131 anda y\u00f6netmek gerekti\u011finde, <code>docker run<\/code> komutlar\u0131n\u0131 tek tek \u00e7al\u0131\u015ft\u0131rmak zahmetli ve hataya a\u00e7\u0131k olabilir. Docker Compose, \u00e7oklu konteyner 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 servislerinizi yap\u0131land\u0131rabilir, ba\u015flatabilir ve y\u00f6netebilirsiniz.<\/p>\n<h4>Docker Compose Kurulumu<\/h4>\n<p>Ubuntu 22.04&#8217;te Docker Engine ile birlikte Docker Compose eklentisi de kurulur. Kurulumu Docker kurulumu k\u0131sm\u0131nda <code>docker-compose-plugin<\/code> ile yapm\u0131\u015ft\u0131k. <code>docker compose<\/code> komutunu kullanarak kontrol edebilirsiniz:<\/p>\n<pre><code class=\"language-bash\">docker compose version<\/code><\/pre>\n<p>E\u011fer bir s\u00fcr\u00fcm numaras\u0131 g\u00f6r\u00fcyorsan\u0131z, Docker Compose ba\u015far\u0131yla kurulmu\u015f demektir.<\/p>\n<h4><code>docker-compose.yml<\/code> Dosyas\u0131 Olu\u015fturma<\/h4>\n<p>\u015eimdi, Nginx konteynerimizi Docker Compose ile tan\u0131mlamak i\u00e7in bir <code>docker-compose.yml<\/code> dosyas\u0131 olu\u015ftural\u0131m. Bu dosya, \u00f6nceki b\u00f6l\u00fcmde elle yapt\u0131\u011f\u0131m\u0131z konfig\u00fcrasyonlar\u0131 (port e\u015fleme, volume mounting, konteyner ad\u0131) i\u00e7erecektir.<\/p>\n<p>\u00d6ncelikle, projeniz i\u00e7in yeni bir klas\u00f6r olu\u015fturun ve i\u00e7ine girin:<\/p>\n<pre><code class=\"language-bash\">mkdir ~\/nginx-docker-compose\ncd ~\/nginx-docker-compose<\/code><\/pre>\n<p>Daha \u00f6nce olu\u015fturdu\u011fumuz <code>~\/nginx-config<\/code> ve <code>~\/nginx-html<\/code> klas\u00f6rlerini bu yeni klas\u00f6re kopyalayabilir veya sembolik ba\u011flar olu\u015fturabilirsiniz. Basitlik ad\u0131na, bu klas\u00f6rleri <code>nginx-docker-compose<\/code> dizininin i\u00e7ine kopyalayal\u0131m:<\/p>\n<pre><code class=\"language-bash\">cp -r ~\/nginx-config .\ncp -r ~\/nginx-html .<\/code><\/pre>\n<p>\u015eimdi <code>docker-compose.yml<\/code> dosyas\u0131n\u0131 olu\u015fturun:<\/p>\n<pre><code class=\"language-bash\">nano docker-compose.yml<\/code><\/pre>\n<p>A\u015fa\u011f\u0131daki i\u00e7eri\u011fi dosyaya yap\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code class=\"language-yaml\">version: '3.8'\n\nservices:\n  nginx:\n    image: nginx:latest\n    container_name: compose-nginx\n    ports:\n      - \"80:80\"\n    volumes:\n      - .\/nginx-config\/default.conf:\/etc\/nginx\/conf.d\/default.conf\n      - .\/nginx-html:\/usr\/share\/nginx\/html\n    restart: always<\/code><\/pre>\n<p>Bu <code>docker-compose.yml<\/code> dosyas\u0131ndaki parametreleri inceleyelim:<\/p>\n<p>*   <code>version: '3.8'<\/code>: Docker Compose dosyas\u0131n\u0131n s\u00fcr\u00fcm\u00fcn\u00fc belirtir. En g\u00fcncel ve \u00f6nerilen s\u00fcr\u00fcm\u00fc kullan\u0131yoruz.<br \/>\n*   <code>services:<\/code>: Tan\u0131mlanacak t\u00fcm servisleri (konteynerleri) i\u00e7erir.<br \/>\n*   <code>nginx:<\/code>: Servisimizin ad\u0131d\u0131r. Bu ismi istedi\u011finiz gibi de\u011fi\u015ftirebilirsiniz.<br \/>\n*   <code>image: nginx:latest<\/code>: Bu servis i\u00e7in kullan\u0131lacak Docker imaj\u0131n\u0131 belirtir. Nginx&#8217;in en son s\u00fcr\u00fcm\u00fcn\u00fc kullan\u0131yoruz.<br \/>\n*   <code>container_name: compose-nginx<\/code>: Konteynerin ad\u0131n\u0131 <code>compose-nginx<\/code> olarak ayarlar.<br \/>\n*   <code>ports:<\/code>: Port e\u015flemelerini tan\u0131mlar. <code>\"80:80\"<\/code> ana makine 80 portunu konteyner 80 portuna e\u015fler.<br \/>\n*   <code>volumes:<\/code>: Volume mounting&#8217;leri tan\u0131mlar.<br \/>\n    *   <code>.\/nginx-config\/default.conf:\/etc\/nginx\/conf.d\/default.conf<\/code>: Mevcut dizindeki <code>nginx-config\/default.conf<\/code> dosyas\u0131n\u0131 konteynerin i\u00e7indeki Nginx konfig\u00fcrasyon yoluna ba\u011flar. <code>.\/<\/code> mevcut dizini temsil eder.<br \/>\n    *   <code>.\/nginx-html:\/usr\/share\/nginx\/html<\/code>: Mevcut dizindeki <code>nginx-html<\/code> klas\u00f6r\u00fcn\u00fc konteynerin i\u00e7indeki Nginx web k\u00f6k dizinine ba\u011flar.<br \/>\n*   <code>restart: always<\/code>: Konteynerin her zaman otomatik olarak yeniden ba\u015flat\u0131lmas\u0131n\u0131 sa\u011flar (sistem yeniden ba\u015flat\u0131ld\u0131\u011f\u0131nda veya konteyner \u00e7\u00f6kt\u00fc\u011f\u00fcnde).<\/p>\n<p>Dosyay\u0131 kaydedin ve kapat\u0131n.<\/p>\n<h4>Docker Compose ile Nginx&#8217;i Ba\u015flatma<\/h4>\n<p><code>docker-compose.yml<\/code> dosyas\u0131n\u0131n bulundu\u011fu dizinde oldu\u011funuzdan emin olun ve a\u015fa\u011f\u0131daki komutu \u00e7al\u0131\u015ft\u0131r\u0131n:<\/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 servisleri olu\u015fturur ve ba\u015flat\u0131r.<br \/>\n*   <code>-d<\/code> (detached mode): Servisleri arka planda \u00e7al\u0131\u015ft\u0131r\u0131r.<\/p>\n<p>Bu komutu \u00e7al\u0131\u015ft\u0131rd\u0131ktan sonra, Docker Compose Nginx imaj\u0131n\u0131 \u00e7ekecek (e\u011fer daha \u00f6nce \u00e7ekilmediyse), <code>compose-nginx<\/code> ad\u0131nda bir konteyner olu\u015fturacak ve onu ba\u015flatacakt\u0131r.<\/p>\n<p>Konteynerin \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 do\u011frulamak i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">docker ps<\/code><\/pre>\n<p><code>compose-nginx<\/code> ad\u0131nda bir konteyner g\u00f6rmelisiniz. Web taray\u0131c\u0131n\u0131zda <code>http:\/\/localhost<\/code> adresini ziyaret ederek \u00f6zel HTML sayfan\u0131z\u0131n y\u00fcklendi\u011fini teyit edin.<\/p>\n<h4>Docker Compose ile Nginx&#8217;i Durdurma ve Kald\u0131rma<\/h4>\n<p>Docker Compose ile ba\u015flat\u0131lan servisleri durdurmak ve kald\u0131rmak da \u00e7ok kolayd\u0131r.<\/p>\n<p>Servisleri durdurmak i\u00e7in (konteynerler hala varl\u0131\u011f\u0131n\u0131 s\u00fcrd\u00fcr\u00fcr):<\/p>\n<pre><code class=\"language-bash\">docker compose stop<\/code><\/pre>\n<p>Servisleri durdurmak ve tamamen kald\u0131rmak i\u00e7in (konteynerler, a\u011flar ve volume&#8217;ler kald\u0131r\u0131l\u0131r):<\/p>\n<pre><code class=\"language-bash\">docker compose down<\/code><\/pre>\n<p>Bu komut, mevcut dizindeki <code>docker-compose.yml<\/code> dosyas\u0131nda tan\u0131mlanan t\u00fcm servisleri durdurur ve kald\u0131r\u0131r.<\/p>\n<h4>Docker Compose ile Geli\u015fmi\u015f Konfig\u00fcrasyon \u00d6rnekleri (Birden Fazla Servis)<\/h4>\n<p>Docker Compose&#8217;un g\u00fcc\u00fc, birden fazla servisi bir arada y\u00f6netebilmesidir. \u00d6rne\u011fin, bir Nginx ters proxy&#8217;nin arkas\u0131nda bir Node.js veya PHP-FPM uygulamas\u0131n\u0131 \u00e7al\u0131\u015ft\u0131rabilirsiniz. \u0130\u015fte basit bir \u00f6rnek:<\/p>\n<pre><code class=\"language-yaml\">version: '3.8'\n\nservices:\n  nginx:\n    image: nginx:latest\n    container_name: compose-nginx\n    ports:\n      - \"80:80\"\n    volumes:\n      - .\/nginx-config\/nginx-app.conf:\/etc\/nginx\/conf.d\/default.conf\n      - .\/nginx-html:\/usr\/share\/nginx\/html # Statik i\u00e7erik i\u00e7in\n    depends_on:\n      - app\n    restart: always\n\n  app:\n    image: php:8.2-fpm # \u00d6rnek olarak PHP-FPM\n    container_name: compose-php-app\n    volumes:\n      - .\/nginx-html:\/var\/www\/html # Uygulama kodunun oldu\u011fu dizin\n    restart: always<\/code><\/pre>\n<p>Bu \u00f6rnekte:<br \/>\n*   <code>nginx<\/code> servisi, <code>app<\/code> servisine ba\u011f\u0131ml\u0131d\u0131r (<code>depends_on: - app<\/code>).<br \/>\n*   Nginx, <code>nginx-app.conf<\/code> dosyas\u0131n\u0131 kullanarak gelen istekleri <code>app<\/code> servisine y\u00f6nlendirebilir (\u00f6rne\u011fin, PHP-FPM soketi \u00fczerinden).<br \/>\n*   <code>app<\/code> servisi (PHP-FPM), web i\u00e7eri\u011fini Nginx ile ayn\u0131 volume&#8217;den okur.<\/p>\n<p>Bu yap\u0131, bir web uygulamas\u0131 i\u00e7in tipik bir mikroservis mimarisinin temelini olu\u015fturur ve Docker Compose ile y\u00f6netimi olduk\u00e7a basitle\u015ftirir.<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h3>\n<p>Nginx&#8217;i Docker konteynerinde \u00e7al\u0131\u015ft\u0131r\u0131rken kar\u015f\u0131la\u015f\u0131labilecek baz\u0131 yayg\u0131n sorular ve sorun giderme ipu\u00e7lar\u0131 a\u015fa\u011f\u0131dad\u0131r.<\/p>\n<h4>Nginx konteyneri neden ba\u015flam\u0131yor?<\/h4>\n<p>*   <strong>Port \u00c7ak\u0131\u015fmas\u0131:<\/strong> En yayg\u0131n nedenlerden biri, ana makinedeki 80 numaral\u0131 portun zaten ba\u015fka bir servis (\u00f6rne\u011fin, zaten \u00e7al\u0131\u015fan ba\u015fka bir Nginx veya Apache) taraf\u0131ndan kullan\u0131l\u0131yor olmas\u0131d\u0131r. <code>docker run -p 8080:80 ...<\/code> veya <code>netstat -tulnp | grep 80<\/code> komutuyla 80 numaral\u0131 portu kullanan servisi kontrol edebilirsiniz.<br \/>\n*   <strong>Konfig\u00fcrasyon Hatas\u0131:<\/strong> Nginx konfig\u00fcrasyon dosyan\u0131zda (\u00f6rne\u011fin, <code>default.conf<\/code>) bir s\u00f6zdizimi hatas\u0131 olabilir. Konteynerin loglar\u0131n\u0131 <code>docker logs <konteyner_ad\u0131><\/code> komutuyla kontrol edin. Nginx, hatal\u0131 bir konfig\u00fcrasyon dosyas\u0131yla ba\u015flamay\u0131 reddeder.<br \/>\n*   <strong>Volume Mounting Sorunlar\u0131:<\/strong> Yanl\u0131\u015f yerel yol veya konteyner i\u00e7i yol belirtimi, Nginx&#8217;in konfig\u00fcrasyon veya web i\u00e7eri\u011fi dosyalar\u0131na eri\u015fememesine neden olabilir. Yollar\u0131n do\u011fru ve mutlak oldu\u011fundan emin olun.<br \/>\n*   <strong>\u0130maj Sorunu:<\/strong> \u00c7ekti\u011finiz Nginx imaj\u0131 bozuk olabilir veya belirli bir s\u00fcr\u00fcmle uyumsuzluk ya\u015f\u0131yor olabilirsiniz. Farkl\u0131 bir Nginx imaj s\u00fcr\u00fcm\u00fcn\u00fc denemeyi d\u00fc\u015f\u00fcnebilirsiniz.<\/p>\n<h4>Nginx konteynerime nas\u0131l SSH yapabilirim?<\/h4>\n<p>Docker konteynerleri genellikle SSH sunucusu i\u00e7ermez ve bu, Docker felsefesine ayk\u0131r\u0131d\u0131r. Konteynerler hafif ve tek bir amaca y\u00f6nelik olmal\u0131d\u0131r. Ancak, sorun giderme veya i\u00e7ini inceleme amac\u0131yla bir kabuk oturumu ba\u015flatabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">docker exec -it <konteyner_ad\u0131> bash<\/code><\/pre>\n<p>veya<\/p>\n<pre><code class=\"language-bash\">docker exec -it <konteyner_ad\u0131> sh<\/code><\/pre>\n<p>Bu komut, \u00e7al\u0131\u015fan konteynerin i\u00e7ine bir <code>bash<\/code> veya <code>sh<\/code> kabu\u011fu a\u00e7ar. \u0130\u015flemlerinizi tamamlad\u0131ktan sonra <code>exit<\/code> yazarak \u00e7\u0131kabilirsiniz.<\/p>\n<h4>Nginx konteyner loglar\u0131n\u0131 nas\u0131l g\u00f6r\u00fcnt\u00fcleyebilirim?<\/h4>\n<p>Konteynerin standart \u00e7\u0131kt\u0131 (stdout) ve standart hata (stderr) ak\u0131\u015flar\u0131n\u0131 g\u00f6r\u00fcnt\u00fclemek i\u00e7in <code>docker logs<\/code> komutunu kullan\u0131n:<\/p>\n<pre><code class=\"language-bash\">docker logs <konteyner_ad\u0131><\/code><\/pre>\n<p>Canl\u0131 loglar\u0131 takip etmek i\u00e7in <code>-f<\/code> (follow) bayra\u011f\u0131n\u0131 kullanabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">docker logs -f <konteyner_ad\u0131><\/code><\/pre>\n<p>Bu, sorun giderme s\u0131ras\u0131nda \u00e7ok faydal\u0131d\u0131r.<\/p>\n<h4>Nginx konteynerini her sistem ba\u015flang\u0131c\u0131nda nas\u0131l otomatik ba\u015flat\u0131r\u0131m?<\/h4>\n<p><code>docker run<\/code> komutuna <code>--restart always<\/code> bayra\u011f\u0131n\u0131 ekleyerek bunu sa\u011flayabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">docker run -d -p 80:80 --name my-nginx --restart always nginx<\/code><\/pre>\n<p>E\u011fer Docker Compose kullan\u0131yorsan\u0131z, <code>docker-compose.yml<\/code> dosyas\u0131ndaki servis tan\u0131m\u0131na <code>restart: always<\/code> eklemeniz yeterlidir, makaledeki \u00f6rnekte bu zaten mevcuttur.<\/p>\n<h4>Nginx konteynerini g\u00fcncellemek i\u00e7in ne yapmal\u0131y\u0131m?<\/h4>\n<p>Nginx imaj\u0131n\u0131 g\u00fcncellemek i\u00e7in a\u015fa\u011f\u0131daki ad\u0131mlar\u0131 izleyebilirsiniz:<\/p>\n<p>1.  Mevcut Nginx konteynerini durdurun ve kald\u0131r\u0131n:<\/p>\n<pre><code class=\"language-bash\">docker stop <konteyner_ad\u0131>\n    docker rm <konteyner_ad\u0131><\/code><\/pre>\n<p>    E\u011fer Docker Compose kullan\u0131yorsan\u0131z:<\/p>\n<pre><code class=\"language-bash\">docker compose down<\/code><\/pre>\n<p>2.  Nginx imaj\u0131n\u0131n en son s\u00fcr\u00fcm\u00fcn\u00fc \u00e7ekin:<\/p>\n<pre><code class=\"language-bash\">docker pull nginx:latest<\/code><\/pre>\n<p>    E\u011fer belirli bir s\u00fcr\u00fcm\u00fc kullan\u0131yorsan\u0131z, o s\u00fcr\u00fcm\u00fc belirtin (\u00f6rne\u011fin, <code>docker pull nginx:1.24<\/code>).<br \/>\n3.  Nginx konteynerini yeni imajla yeniden ba\u015flat\u0131n:<\/p>\n<pre><code class=\"language-bash\">docker run -d -p 80:80 --name my-nginx --restart always -v ... nginx<\/code><\/pre>\n<p>    E\u011fer Docker Compose kullan\u0131yorsan\u0131z:<\/p>\n<pre><code class=\"language-bash\">docker compose up -d<\/code><\/pre>\n<p>    Docker Compose, yeni bir imaj\u0131n \u00e7ekilip \u00e7ekilmeyece\u011fini otomatik olarak kontrol eder, ancak emin olmak i\u00e7in <code>docker compose pull<\/code> komutunu <code>up<\/code> komutundan \u00f6nce \u00e7al\u0131\u015ft\u0131rabilirsiniz.<\/p>\n<p>Bu i\u015flemler, Nginx&#8217;in en g\u00fcncel s\u00fcr\u00fcm\u00fcn\u00fc kullanman\u0131z\u0131 sa\u011flar.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>Bu kapsaml\u0131 makalede, Nginx&#8217;i Docker konteyneri i\u00e7inde Ubuntu 22.04 \u00fczerinde \u00e7al\u0131\u015ft\u0131rman\u0131n t\u00fcm detaylar\u0131n\u0131 ad\u0131m ad\u0131m inceledik. Docker&#8217;\u0131n kurulumundan ba\u015flayarak, Nginx&#8217;in temel bir konteynerde \u00e7al\u0131\u015ft\u0131r\u0131lmas\u0131na, \u00f6zel konfig\u00fcrasyon ve statik i\u00e7eriklerle \u00f6zelle\u015ftirilmesine ve son olarak Docker Compose ile \u00e7oklu konteyner uygulamalar\u0131n\u0131n y\u00f6netimine kadar geni\u015f bir yelpazeyi ele ald\u0131k.<\/p>\n<p>Docker, Nginx gibi servisleri izole, ta\u015f\u0131nabilir ve \u00f6l\u00e7eklenebilir bir \u015fekilde da\u011f\u0131tmak i\u00e7in g\u00fc\u00e7l\u00fc bir platform sunar. Bu yakla\u015f\u0131m, ba\u011f\u0131ml\u0131l\u0131k \u00e7ak\u0131\u015fmalar\u0131n\u0131 ortadan kald\u0131r\u0131r, geli\u015ftirme ve \u00fcretim ortamlar\u0131 aras\u0131nda tutarl\u0131l\u0131k sa\u011flar ve sistem kaynaklar\u0131n\u0131 daha verimli kullanman\u0131za olanak tan\u0131r. \u00d6zel konfig\u00fcrasyonlar ve volume mounting sayesinde, Nginx&#8217;i ihtiya\u00e7lar\u0131n\u0131za g\u00f6re tamamen \u00f6zelle\u015ftirebilirsiniz. Docker Compose ise, daha karma\u015f\u0131k web uygulamalar\u0131n\u0131 (\u00f6rne\u011fin, Nginx, PHP-FPM ve bir veritaban\u0131 i\u00e7eren bir LAMP\/LEMP y\u0131\u011f\u0131n\u0131) tek bir YAML dosyas\u0131yla kolayca tan\u0131mlaman\u0131za ve y\u00f6netmenize olanak tan\u0131yarak verimlili\u011fi art\u0131r\u0131r.<\/p>\n<p>Bu makalede edindi\u011finiz bilgilerle, Nginx&#8217;i Docker konteynerlerinde g\u00fcvenle \u00e7al\u0131\u015ft\u0131rabilir, web sitelerinizi ve uygulamalar\u0131n\u0131z\u0131 daha modern ve esnek bir altyap\u0131 \u00fczerinde bar\u0131nd\u0131rabilirsiniz. Docker ve Nginx&#8217;in birle\u015fimi, g\u00fcn\u00fcm\u00fcz\u00fcn dinamik web ortamlar\u0131nda y\u00fcksek performansl\u0131 ve y\u00f6netilebilir \u00e7\u00f6z\u00fcmler sunmak i\u00e7in g\u00fc\u00e7l\u00fc bir kombinasyondur. Bu temel bilgileri kullanarak, ters proxy kurulumlar\u0131, y\u00fck dengeleme, SSL\/TLS sonland\u0131rma ve daha fazlas\u0131 gibi daha geli\u015fmi\u015f Nginx senaryolar\u0131na ge\u00e7i\u015f yapabilirsiniz.<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Nginx&#8217;i Docker Konteynerinde Ubuntu 22.04 \u00dczerinde \u00c7al\u0131\u015ft\u0131rma\nGiri\u015f\nG\u00fcn\u00fcm\u00fcz\u00fcn h\u0131zl\u0131 geli\u015fen yaz\u0131l\u0131m d\u00fcnyas\u0131nda, uygulamalar\u0131 tutarl","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":[1468],"tags":[],"class_list":{"0":"post-31941","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-ubuntu","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>Nginx&#039;i Docker Konteynerinde Ubuntu 22.04 \u00dczerinde \u00c7al\u0131\u015ft\u0131rma - 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\/nginxi-docker-konteynerinde-ubuntu-22-04-uzerinde-calistirma\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Nginx&#039;i Docker Konteynerinde Ubuntu 22.04 \u00dczerinde \u00c7al\u0131\u015ft\u0131rma\" \/>\n<meta property=\"og:description\" content=\"Nginx&#039;i Docker Konteynerinde Ubuntu 22.04 \u00dczerinde \u00c7al\u0131\u015ft\u0131rma Giri\u015f G\u00fcn\u00fcm\u00fcz\u00fcn h\u0131zl\u0131 geli\u015fen yaz\u0131l\u0131m d\u00fcnyas\u0131nda, uygulamalar\u0131 tutarl\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/nginxi-docker-konteynerinde-ubuntu-22-04-uzerinde-calistirma\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-15T17:41:09+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\/nginxi-docker-konteynerinde-ubuntu-22-04-uzerinde-calistirma\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/nginxi-docker-konteynerinde-ubuntu-22-04-uzerinde-calistirma\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Nginx&#8217;i Docker Konteynerinde Ubuntu 22.04 \u00dczerinde \u00c7al\u0131\u015ft\u0131rma\",\"datePublished\":\"2025-10-15T17:41:09+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/nginxi-docker-konteynerinde-ubuntu-22-04-uzerinde-calistirma\/\"},\"wordCount\":3367,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Ubuntu\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/nginxi-docker-konteynerinde-ubuntu-22-04-uzerinde-calistirma\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/nginxi-docker-konteynerinde-ubuntu-22-04-uzerinde-calistirma\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/nginxi-docker-konteynerinde-ubuntu-22-04-uzerinde-calistirma\/\",\"name\":\"Nginx'i Docker Konteynerinde Ubuntu 22.04 \u00dczerinde \u00c7al\u0131\u015ft\u0131rma - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-10-15T17:41:09+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/nginxi-docker-konteynerinde-ubuntu-22-04-uzerinde-calistirma\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/nginxi-docker-konteynerinde-ubuntu-22-04-uzerinde-calistirma\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/nginxi-docker-konteynerinde-ubuntu-22-04-uzerinde-calistirma\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Nginx&#8217;i Docker Konteynerinde Ubuntu 22.04 \u00dczerinde \u00c7al\u0131\u015ft\u0131rma\"}]},{\"@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":"Nginx'i Docker Konteynerinde Ubuntu 22.04 \u00dczerinde \u00c7al\u0131\u015ft\u0131rma - 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\/nginxi-docker-konteynerinde-ubuntu-22-04-uzerinde-calistirma\/","og_locale":"tr_TR","og_type":"article","og_title":"Nginx'i Docker Konteynerinde Ubuntu 22.04 \u00dczerinde \u00c7al\u0131\u015ft\u0131rma","og_description":"Nginx'i Docker Konteynerinde Ubuntu 22.04 \u00dczerinde \u00c7al\u0131\u015ft\u0131rma Giri\u015f G\u00fcn\u00fcm\u00fcz\u00fcn h\u0131zl\u0131 geli\u015fen yaz\u0131l\u0131m d\u00fcnyas\u0131nda, uygulamalar\u0131 tutarl","og_url":"https:\/\/fatihsoysal.com\/blog\/nginxi-docker-konteynerinde-ubuntu-22-04-uzerinde-calistirma\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-10-15T17:41:09+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\/nginxi-docker-konteynerinde-ubuntu-22-04-uzerinde-calistirma\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/nginxi-docker-konteynerinde-ubuntu-22-04-uzerinde-calistirma\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Nginx&#8217;i Docker Konteynerinde Ubuntu 22.04 \u00dczerinde \u00c7al\u0131\u015ft\u0131rma","datePublished":"2025-10-15T17:41:09+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/nginxi-docker-konteynerinde-ubuntu-22-04-uzerinde-calistirma\/"},"wordCount":3367,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Ubuntu"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/nginxi-docker-konteynerinde-ubuntu-22-04-uzerinde-calistirma\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/nginxi-docker-konteynerinde-ubuntu-22-04-uzerinde-calistirma\/","url":"https:\/\/fatihsoysal.com\/blog\/nginxi-docker-konteynerinde-ubuntu-22-04-uzerinde-calistirma\/","name":"Nginx'i Docker Konteynerinde Ubuntu 22.04 \u00dczerinde \u00c7al\u0131\u015ft\u0131rma - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-10-15T17:41:09+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/nginxi-docker-konteynerinde-ubuntu-22-04-uzerinde-calistirma\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/nginxi-docker-konteynerinde-ubuntu-22-04-uzerinde-calistirma\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/nginxi-docker-konteynerinde-ubuntu-22-04-uzerinde-calistirma\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Nginx&#8217;i Docker Konteynerinde Ubuntu 22.04 \u00dczerinde \u00c7al\u0131\u015ft\u0131rma"}]},{"@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\/31941","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=31941"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/31941\/revisions"}],"predecessor-version":[{"id":31942,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/31941\/revisions\/31942"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=31941"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=31941"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=31941"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}