{"id":1945,"date":"2026-09-12T14:56:03","date_gmt":"2026-09-12T11:56:03","guid":{"rendered":"https:\/\/narhost.com\/destek\/docker-compose-kullanimi-vps\/"},"modified":"2026-09-14T20:13:43","modified_gmt":"2026-09-14T17:13:43","slug":"docker-compose-kullanimi-vps","status":"publish","type":"post","link":"https:\/\/narhost.com\/destek\/docker-compose-kullanimi-vps\/","title":{"rendered":"Docker Compose ile \u00c7oklu Container Y\u00f6netimi (VPS)"},"content":{"rendered":"<p class=\"kb-dogrulama\">Son do\u011frulama: Eyl\u00fcl 2026 \u00b7 Ubuntu 24.04 test sunucusunda denendi<\/p>\n<div id=\"hizli-cozum\" class=\"ai-box ai-box--cozum\">\n<p class=\"ai-box-title\">H\u0131zl\u0131 \u00e7\u00f6z\u00fcm<\/p>\n<p><strong>Docker Compose kullan\u0131m\u0131 VPS<\/strong>&#8216;nizde birden fazla container&#8217;\u0131 (\u00f6r. web sunucusu + \u00f6nbellek) tek bir YAML dosyas\u0131yla tan\u0131mlay\u0131p tek komutla aya\u011fa kald\u0131rman\u0131z\u0131 sa\u011flar; container&#8217;lar aras\u0131ndaki a\u011f ve ba\u015flatma s\u0131ras\u0131n\u0131 Compose kendi y\u00f6netir.<\/p>\n<ol>\n<li>Proje klas\u00f6r\u00fc a\u00e7\u0131n ve i\u00e7ine <code>docker-compose.yml<\/code> dosyas\u0131 olu\u015fturun.<\/li>\n<li>Dosyaya servisleri (<code>services:<\/code> alt\u0131nda her container&#8217;\u0131) tan\u0131mlay\u0131n.<\/li>\n<li><code>docker compose up -d<\/code> ile t\u00fcm servisleri arka planda ba\u015flat\u0131n.<\/li>\n<li><code>docker compose ps<\/code> ile hangi container&#8217;\u0131n hangi portta \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 do\u011frulay\u0131n.<\/li>\n<\/ol>\n<\/div>\n<table class=\"kb-uyg\">\n<tr>\n<th>Panel<\/th>\n<td>Yok \u2014 komut sat\u0131r\u0131ndan (SSH veya konsol)<\/td>\n<\/tr>\n<tr>\n<th>Sistem<\/th>\n<td>VPS\/VDS: Ubuntu 24.04 (Docker Engine kurulu olmal\u0131)<\/td>\n<\/tr>\n<tr>\n<th>Yetki<\/th>\n<td>root veya docker grubunda bir kullan\u0131c\u0131<\/td>\n<\/tr>\n<tr>\n<th>Narhost \u00fcr\u00fcn\u00fc<\/th>\n<td><a href=\"https:\/\/narhost.com\/vps-sunucu\" title=\"VPS Sunucu - Narhost\">VPS Sunucu<\/a><\/td>\n<\/tr>\n<\/table>\n<div class=\"kb-once\">\n<p class=\"label\">Ba\u015flamadan \u00f6nce<\/p>\n<ul>\n<li>Sunucunuzda Docker Engine kurulu olmal\u0131; kurulu de\u011filse \u00f6nce <a href=\"https:\/\/narhost.com\/destek\/ubuntu-docker-kurulumu\/\" title=\"Ubuntu&#039;da Docker Kurulumu - Narhost Destek\">Ubuntu&#8217;da Docker kurulumu<\/a> kart\u0131ndaki ad\u0131mlar\u0131 tamamlay\u0131n.<\/li>\n<li>Docker Compose Engine&#8217;e ba\u011fl\u0131 bir eklenti (<code>docker-compose-plugin<\/code>) olarak gelir; ayr\u0131 bir kurulum gerekmez, <code>docker compose version<\/code> ile kontrol edin.<\/li>\n<li>Sunucunuza <strong>root veya sudo yetkili bir kullan\u0131c\u0131yla<\/strong> ba\u011flanabiliyor olmal\u0131s\u0131n\u0131z; SSH yan\u0131t vermiyorsa <a href=\"https:\/\/narhost.com\/destek\/konsol-baglantisi-ile-sunucuya-nasil-erisilir\/\" title=\"Konsol ba\u011flant\u0131s\u0131 ile sunucuya nas\u0131l eri\u015filir - Narhost Destek\">konsol ba\u011flant\u0131s\u0131n\u0131<\/a> kullan\u0131n.<\/li>\n<li>Her servisin d\u0131\u015far\u0131ya a\u00e7aca\u011f\u0131 portun (\u00f6r. 8080) bo\u015f oldu\u011fundan emin olun.<\/li>\n<\/ul>\n<\/div>\n<h2>Docker Compose kullan\u0131m\u0131 VPS&#8217;te neden tercih edilir<\/h2>\n<p>Tek bir container&#8217;\u0131 <code>docker run<\/code> ile ba\u015flatmak basit bir siteyi ayakta tutar, ama ger\u00e7ek bir uygulama genelde birden fazla par\u00e7adan olu\u015fur: bir web sunucusu, bir veritaban\u0131, bir \u00f6nbellek katman\u0131. Bu par\u00e7alar\u0131 elle, tek tek <code>docker run<\/code> komutlar\u0131yla ba\u015flat\u0131p aralar\u0131ndaki a\u011f\u0131 kurmak hem hataya a\u00e7\u0131kt\u0131r hem de tekrarlanabilir de\u011fildir. Docker Compose kullan\u0131m\u0131 VPS&#8217;te bu sorunu tek bir <code>docker-compose.yml<\/code> dosyas\u0131yla \u00e7\u00f6zer: hangi container&#8217;lar\u0131n \u00e7al\u0131\u015faca\u011f\u0131, hangi portlar\u0131 a\u00e7aca\u011f\u0131, hangi ortam de\u011fi\u015fkenlerini alaca\u011f\u0131 ve aralar\u0131ndaki ba\u011f\u0131ml\u0131l\u0131k s\u0131ras\u0131 tek dosyada tan\u0131mlan\u0131r.<\/p>\n<p>Sunucunuzu yeniden kurman\u0131z ya da ayn\u0131 yap\u0131y\u0131 ba\u015fka bir VPS&#8217;e ta\u015f\u0131man\u0131z gerekti\u011finde tek yapman\u0131z gereken bu dosyay\u0131 kopyalay\u0131p <code>docker compose up -d<\/code> \u00e7al\u0131\u015ft\u0131rmakt\u0131r; container&#8217;lar ayn\u0131 a\u011f ve ba\u011f\u0131ml\u0131l\u0131k s\u0131ras\u0131yla yeniden aya\u011fa kalkar. Bu, \u00e7ok container&#8217;l\u0131 bir yap\u0131y\u0131 elle ad\u0131m ad\u0131m kurmaktan \u00e7ok daha az hataya a\u00e7\u0131k bir y\u00f6ntemdir. Dosyan\u0131n s\u00f6z dizimi (servisler, a\u011flar, volumeler) <a href=\"https:\/\/docs.docker.com\/compose\/\" title=\"Docker Compose resmi dok\u00fcmantasyonu\" target=\"_blank\" rel=\"noopener\">Docker Compose&#8217;un resmi dok\u00fcmantasyonunda<\/a> tan\u0131mlan\u0131r; bu kart en s\u0131k kullan\u0131lan alanlar\u0131 kapsar.<\/p>\n<figure class=\"nh-sema\"><img src=\"https:\/\/narhost.com\/destek\/wp-content\/uploads\/2026\/09\/docker-compose-kullanimi-vps-sema-narhost.webp\" alt=\"Docker compose kullan\u0131m\u0131 vps \u2014 proje dosyas\u0131n\u0131 yazma, servisleri ba\u015flatma ve kapatma ad\u0131mlar\u0131\" width=\"1200\" height=\"500\" loading=\"lazy\" decoding=\"async\"><figcaption>Proje klas\u00f6r\u00fcn\u00fc a\u00e7, servisleri tan\u0131mla, aya\u011fa kald\u0131r, durumu izle, i\u015fin bitince kapat.<\/figcaption><\/figure>\n<h2>Docker Compose ile \u00e7ok container&#8217;l\u0131 yap\u0131 nas\u0131l kurulur, ad\u0131m ad\u0131m<\/h2>\n<ol class=\"kb-adimlar\">\n<li><strong>Proje klas\u00f6r\u00fc olu\u015fturun ve i\u00e7ine girin:<\/strong>\n<pre><code class=\"language-bash\">mkdir -p ~\/demo-proje &amp;&amp; cd ~\/demo-proje<\/code><\/pre>\n<\/li>\n<li><strong><code>docker-compose.yml<\/code> dosyas\u0131n\u0131 yaz\u0131n:<\/strong>\n<pre><code class=\"language-yaml\">services:\n  web:\n    image: nginx:alpine\n    ports:\n      - \"8080:80\"\n    depends_on:\n      - cache\n  cache:\n    image: redis:alpine\n    expose:\n      - \"6379\"<\/code><\/pre>\n<p class=\"kb-cikti\">Bu tan\u0131m iki servisi kapsar: d\u0131\u015far\u0131ya 8080 portundan a\u00e7\u0131lan bir web sunucusu ve yaln\u0131zca web servisinin eri\u015febildi\u011fi bir \u00f6nbellek. <code>depends_on<\/code> cache&#8217;in web&#8217;den \u00f6nce ba\u015flamas\u0131n\u0131 sa\u011flar.<\/p>\n<\/li>\n<li><strong>S\u00fcr\u00fcm\u00fc do\u011frulay\u0131p servisleri ba\u015flat\u0131n:<\/strong>\n<pre><code class=\"language-bash\">docker compose version\ndocker compose up -d<\/code><\/pre>\n<p class=\"kb-cikti\">Beklenen sonu\u00e7: \u00f6nce <code>Docker Compose version v2.x<\/code> ya da \u00fczeri, ard\u0131ndan iki imaj\u0131n \u00e7ekilip iki container&#8217;\u0131n <code>Created<\/code>\/<code>Started<\/code> durumuna ge\u00e7ti\u011fini g\u00f6steren sat\u0131rlar. Test sunucusunda <code>demo-proje-cache-1<\/code> ve <code>demo-proje-web-1<\/code> bu s\u0131rayla olu\u015fturulup ba\u015flat\u0131ld\u0131.<\/p>\n<\/li>\n<li><strong>Durumu ve d\u0131\u015f eri\u015fimi kontrol edin:<\/strong>\n<pre><code class=\"language-bash\">docker compose ps\ncurl -sI http:\/\/localhost:8080<\/code><\/pre>\n<p class=\"kb-cikti\">Beklenen sonu\u00e7: <code>ps<\/code> \u00e7\u0131kt\u0131s\u0131nda her iki container <code>Up<\/code> durumunda, web servisinin <code>PORTS<\/code> s\u00fctununda <code>0.0.0.0:8080-&gt;80\/tcp<\/code> g\u00f6r\u00fcn\u00fcr; <code>curl<\/code> ise <code>HTTP\/1.1 200 OK<\/code> d\u00f6nd\u00fcr\u00fcr. Test sunucusunda birebir bu sonu\u00e7 al\u0131nd\u0131.<\/p>\n<\/li>\n<li><strong>Bir servisin loglar\u0131na bak\u0131n:<\/strong>\n<pre><code class=\"language-bash\">docker compose logs --tail=20 cache<\/code><\/pre>\n<p class=\"kb-cikti\">Beklenen sonu\u00e7: se\u00e7ti\u011finiz servisin (burada <code>cache<\/code>) son sat\u0131rlar\u0131n\u0131 g\u00f6sterir; test sunucusunda Redis&#8217;in &#8220;Ready to accept connections&#8221; sat\u0131r\u0131 bu \u015fekilde g\u00f6r\u00fcld\u00fc. Di\u011fer alt komutlar\u0131n tam listesi <a href=\"https:\/\/docs.docker.com\/reference\/cli\/docker\/compose\/\" title=\"docker compose komut referans\u0131 (resmi dok\u00fcman)\" target=\"_blank\" rel=\"noopener\">docker compose komut referans\u0131nda<\/a> yer al\u0131r.<\/p>\n<\/li>\n<li><strong>\u0130\u015finiz bitti\u011finde yap\u0131y\u0131 kapat\u0131n:<\/strong>\n<pre><code class=\"language-bash\">docker compose down<\/code><\/pre>\n<p class=\"kb-cikti\">Beklenen sonu\u00e7: her iki container ve aralar\u0131nda kurulan sanal a\u011f s\u0131rayla durdurulup kald\u0131r\u0131l\u0131r; veriler bir <code>volume<\/code> tan\u0131mlamad\u0131ysan\u0131z container ile birlikte silinir.<\/p>\n<\/li>\n<\/ol>\n<div class=\"warn-box\">\n<p class=\"label\">Dikkat<\/p>\n<p><code>docker compose down<\/code> yaln\u0131zca container ve a\u011f\u0131 kald\u0131r\u0131r; kal\u0131c\u0131 veri tutmak istiyorsan\u0131z (\u00f6r. veritaban\u0131) <code>docker-compose.yml<\/code> i\u00e7inde bir <code>volumes:<\/code> tan\u0131m\u0131 kullan\u0131n, aksi halde <code>down<\/code> sonras\u0131 veri kaybolur.<\/p>\n<\/div>\n<h2>Do\u011frulama<\/h2>\n<div class=\"success-box\">\n<p class=\"label\">Sonu\u00e7<\/p>\n<p><code>docker compose ps<\/code> her iki servisi de <code>Up<\/code> durumunda g\u00f6steriyor ve taray\u0131c\u0131dan sunucu IP&#8217;nizle <code>:8080<\/code> adresini a\u00e7t\u0131\u011f\u0131n\u0131zda web servisi yan\u0131t veriyorsa Docker Compose kullan\u0131m\u0131 VPS&#8217;te ba\u015far\u0131yla tamamlanm\u0131\u015f demektir.<\/p>\n<\/div>\n<h2>H\u00e2l\u00e2 \u00e7\u00f6z\u00fclmediyse<\/h2>\n<ul>\n<li><strong><code>docker compose<\/code> komutu bulunam\u0131yor.<\/strong> Docker Engine eski bir s\u00fcr\u00fcmle kurulmu\u015f olabilir; <a href=\"https:\/\/narhost.com\/destek\/ubuntu-docker-kurulumu\/\" title=\"Ubuntu&#039;da Docker Kurulumu - Narhost Destek\">Docker kurulumu<\/a> kart\u0131ndaki ad\u0131mlar\u0131 izleyip <code>docker-compose-plugin<\/code> paketinin kuruldu\u011fundan emin olun.<\/li>\n<li><strong>Bir servis <code>Restarting<\/code> d\u00f6ng\u00fcs\u00fcnde kal\u0131yor.<\/strong><code>docker compose logs &lt;servis ad\u0131&gt;<\/code> ile o servisin hata mesaj\u0131n\u0131 okuyun; genelde yanl\u0131\u015f ortam de\u011fi\u015fkeni veya eksik ba\u011f\u0131ml\u0131l\u0131ktan kaynaklan\u0131r.<\/li>\n<li><strong>Port d\u0131\u015far\u0131dan a\u00e7\u0131lm\u0131yor.<\/strong><code>docker-compose.yml<\/code>&#8216;daki <code>ports:<\/code> sat\u0131r\u0131n\u0131n do\u011fru yaz\u0131ld\u0131\u011f\u0131ndan ve sunucunuzda o portu engelleyen bir g\u00fcvenlik duvar\u0131 kural\u0131 olmad\u0131\u011f\u0131ndan emin olun.<\/li>\n<li><strong>Disk h\u0131zla doluyor.<\/strong> Kullan\u0131lmayan imaj ve container katmanlar\u0131 <code>\/var\/lib\/docker<\/code> alt\u0131nda birikir; <a href=\"https:\/\/narhost.com\/destek\/linux-sunucuda-disk-kullanimi-nasil-denetlenir\/\" title=\"Linux sunucuda disk kullan\u0131m\u0131 nas\u0131l denetlenir - Narhost Destek\">disk kullan\u0131m\u0131n\u0131 denetleme<\/a> kart\u0131ndaki ad\u0131mlarla durumu kontrol edin, ard\u0131ndan <code>docker system prune<\/code> ile temizleyin.<\/li>\n<\/ul>\n<div class=\"cta-box\">\n<p class=\"label\">Narhost deste\u011fi<\/p>\n<p>Docker Compose kullan\u0131m\u0131 s\u0131ras\u0131nda container&#8217;lar ba\u015flam\u0131yorsa destek talebinize sunucunuzun IP adresini, <code>docker-compose.yml<\/code> i\u00e7eri\u011fini ve <code>docker compose logs<\/code> \u00e7\u0131kt\u0131s\u0131n\u0131 ekleyin.<\/p>\n<p><a class=\"cta-btn\" href=\"https:\/\/narhost.com\/submitticket.php\" title=\"Narhost destek talebi a\u00e7\">Destek talebi a\u00e7<\/a><\/div>\n<div class=\"kb-ilgili\">\n<p class=\"label\">Sonraki ad\u0131mlar<\/p>\n<ul>\n<li><a href=\"https:\/\/narhost.com\/destek\/vps-vds-ilk-kurulum-rehberi\/\" title=\"VPS VDS Sunucu \u0130lk Kurulum Rehberi - Narhost Destek\">VPS VDS Sunucu \u0130lk Kurulum Rehberi<\/a><\/li>\n<li><a href=\"https:\/\/narhost.com\/destek\/ubuntu-docker-kurulumu\/\" title=\"Ubuntu&#039;da Docker Kurulumu - Narhost Destek\">Ubuntu&#8217;da Docker Kurulumu<\/a><\/li>\n<li><a href=\"https:\/\/narhost.com\/destek\/linux-sunucuda-disk-kullanimi-nasil-denetlenir\/\" title=\"Linux sunucuda disk kullan\u0131m\u0131 nas\u0131l denetlenir - Narhost Destek\">Linux sunucuda disk kullan\u0131m\u0131 nas\u0131l denetlenir<\/a><\/li>\n<li><a href=\"https:\/\/narhost.com\/destek\/top-htop-ile-kaynak-izleme\/\" title=\"Top ve htop ile kaynak izleme - Narhost Destek\">Top ve htop ile kaynak izleme<\/a><\/li>\n<\/ul>\n<\/div>\n<div class=\"kb-faq\">\n<h2>S\u0131k\u00e7a sorulan sorular<\/h2>\n<h3>Docker Compose kullan\u0131m\u0131 VPS&#8217;te \u00fccretsiz mi?<\/h3>\n<p>Evet. Docker Compose, Docker Engine kurulumuyla birlikte gelen <code>docker-compose-plugin<\/code> paketi \u00fczerinden \u00fccretsiz kullan\u0131l\u0131r; ayr\u0131 bir lisans ya da abonelik gerekmez.<\/p>\n<h3>docker-compose (tire ile) ve docker compose (bo\u015flukla) farkl\u0131 m\u0131?<\/h3>\n<p>Eski <code>docker-compose<\/code> ayr\u0131 bir Python paketiydi ve art\u0131k g\u00fcncellenmiyor. G\u00fcncel Docker s\u00fcr\u00fcmlerinde komut <code>docker compose<\/code> (bo\u015flukla) \u015feklindedir ve do\u011frudan Docker CLI&#8217;nin bir eklentisidir; bu kart g\u00fcncel <code>docker compose<\/code> komutunu kullan\u0131r.<\/p>\n<h3>Ka\u00e7 container&#8217;a kadar tek dosyada tan\u0131mlayabilirim?<\/h3>\n<p>Teknik bir \u00fcst s\u0131n\u0131r yoktur; sunucunuzun i\u015flemci ve bellek kapasitesi s\u0131n\u0131r\u0131 belirler. Be\u015f on container&#8217;l\u0131k yap\u0131lar tek <code>docker-compose.yml<\/code> dosyas\u0131nda rahatl\u0131kla y\u00f6netilir.<\/p>\n<h3>Compose dosyas\u0131ndaki verileri sunucu yeniden ba\u015flay\u0131nca kaybeder miyim?<\/h3>\n<p>Hay\u0131r, container&#8217;lar <code>restart: unless-stopped<\/code> gibi bir politika ile tan\u0131mlanm\u0131\u015fsa Docker servisi ba\u015flad\u0131\u011f\u0131nda otomatik aya\u011fa kalkar; kal\u0131c\u0131 veri i\u00e7in ayr\u0131ca <code>volumes:<\/code> tan\u0131mlaman\u0131z gerekir.<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Docker Compose kullan\u0131m\u0131 VPS&#8217;te docker-compose.yml dosyas\u0131yla birden fazla container&#8217;\u0131n tan\u0131mlan\u0131p docker compose up -d ile ba\u015flat\u0131lmas\u0131, durumun ps ile do\u011frulanmas\u0131 ve down ile kapat\u0131lmas\u0131.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12,13],"tags":[235,258],"class_list":["post-1945","post","type-post","status-publish","format-standard","hentry","category-vds-server","category-vps-server","tag-docker","tag-docker-compose"],"meta_box":[],"_links":{"self":[{"href":"https:\/\/narhost.com\/destek\/wp-json\/wp\/v2\/posts\/1945","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/narhost.com\/destek\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/narhost.com\/destek\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/narhost.com\/destek\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/narhost.com\/destek\/wp-json\/wp\/v2\/comments?post=1945"}],"version-history":[{"count":1,"href":"https:\/\/narhost.com\/destek\/wp-json\/wp\/v2\/posts\/1945\/revisions"}],"predecessor-version":[{"id":1952,"href":"https:\/\/narhost.com\/destek\/wp-json\/wp\/v2\/posts\/1945\/revisions\/1952"}],"wp:attachment":[{"href":"https:\/\/narhost.com\/destek\/wp-json\/wp\/v2\/media?parent=1945"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/narhost.com\/destek\/wp-json\/wp\/v2\/categories?post=1945"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/narhost.com\/destek\/wp-json\/wp\/v2\/tags?post=1945"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}