{"id":38492,"date":"2026-02-01T12:30:35","date_gmt":"2026-02-01T09:30:35","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/docker-compose-ile-cok-kapsayicili-uygulamalari-calistirma-rehberi\/"},"modified":"2026-02-01T12:30:35","modified_gmt":"2026-02-01T09:30:35","slug":"docker-compose-ile-cok-kapsayicili-uygulamalari-calistirma-rehberi","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/docker-compose-ile-cok-kapsayicili-uygulamalari-calistirma-rehberi\/","title":{"rendered":"Docker Compose ile \u00c7ok Kapsay\u0131c\u0131l\u0131 Uygulamalar\u0131 \u00c7al\u0131\u015ft\u0131rma Rehberi"},"content":{"rendered":"<h2>Docker Compose ile \u00c7ok Kapsay\u0131c\u0131l\u0131 Uygulamalar\u0131 \u00c7al\u0131\u015ft\u0131rma Rehberi<\/h2>\n<p>G\u00fcn\u00fcm\u00fcz\u00fcn modern uygulama mimarileri, genellikle birden fazla bile\u015fenin bir araya gelmesiyle olu\u015fur. Bir web uygulamas\u0131, bir veritaban\u0131, bir \u00f6nbellek servisi veya bir mesaj kuyru\u011fu gibi farkl\u0131 servislerin birlikte \u00e7al\u0131\u015fmas\u0131 gerekti\u011finde, bu bile\u015fenleri y\u00f6netmek karma\u015f\u0131k bir hal alabilir. \u0130\u015fte tam da bu noktada Docker Compose devreye girerek, \u00e7ok kapsay\u0131c\u0131l\u0131 uygulamalar\u0131n tan\u0131mlanmas\u0131n\u0131, \u00e7al\u0131\u015ft\u0131r\u0131lmas\u0131n\u0131 ve y\u00f6netilmesini basitle\u015ftiren g\u00fc\u00e7l\u00fc bir ara\u00e7 sunar. Bu makalede, Docker Compose&#8217;un ne oldu\u011funu, nas\u0131l kuruldu\u011funu ve \u00e7ok kapsay\u0131c\u0131l\u0131 uygulamalar\u0131 onunla nas\u0131l kolayca \u00e7al\u0131\u015ft\u0131raca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m inceleyece\u011fiz.<\/p>\n<h3>Docker Compose Nedir ve Neden Kullanmal\u0131y\u0131z?<\/h3>\n<p>Docker Compose, birden fazla Docker kapsay\u0131c\u0131s\u0131n\u0131 i\u00e7eren uygulamalar\u0131 tan\u0131mlamak ve \u00e7al\u0131\u015ft\u0131rmak i\u00e7in kullan\u0131lan bir ara\u00e7t\u0131r. Tek bir YAML dosyas\u0131 kullanarak uygulaman\u0131z\u0131n t\u00fcm servislerini, a\u011flar\u0131n\u0131 ve birimlerini yap\u0131land\u0131rabilir, ard\u0131ndan tek bir komutla t\u00fcm uygulamay\u0131 aya\u011fa kald\u0131rabilirsiniz. Bu, geli\u015ftirme, test ve hatta k\u00fc\u00e7\u00fck \u00f6l\u00e7ekli \u00fcretim ortamlar\u0131nda b\u00fcy\u00fck kolayl\u0131k sa\u011flar.<\/p>\n<h4>Docker ve Kapsay\u0131c\u0131la\u015ft\u0131rma Temelleri<\/h4>\n<p>Docker, uygulamalar\u0131 ve ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 izole edilmi\u015f, ta\u015f\u0131nabilir birimler olan kapsay\u0131c\u0131lar (containers) i\u00e7inde paketlemeyi sa\u011flayan bir platformdur. Her kapsay\u0131c\u0131, uygulaman\u0131n \u00e7al\u0131\u015fmas\u0131 i\u00e7in gereken her \u015feyi (kod, \u00e7al\u0131\u015fma zaman\u0131, sistem ara\u00e7lar\u0131, k\u00fct\u00fcphaneler vb.) i\u00e7erir. Bu sayede &#8220;benim makinemde \u00e7al\u0131\u015f\u0131yordu&#8221; sorunlar\u0131 ortadan kalkar ve uygulamalar farkl\u0131 ortamlarda tutarl\u0131 bir \u015fekilde \u00e7al\u0131\u015f\u0131r. Dockerfile ile kapsay\u0131c\u0131 imajlar\u0131 olu\u015fturulur, bu imajlardan da kapsay\u0131c\u0131lar \u00e7al\u0131\u015ft\u0131r\u0131l\u0131r.<\/p>\n<h4>\u00c7ok Kapsay\u0131c\u0131l\u0131 Uygulamalar\u0131n Zorluklar\u0131<\/h4>\n<p>Tek bir kapsay\u0131c\u0131y\u0131 y\u00f6netmek nispeten kolay olsa da, birbiriyle etkile\u015fimde olan birden fazla kapsay\u0131c\u0131y\u0131 (\u00f6rne\u011fin, bir web sunucusu ve bir veritaban\u0131) manuel olarak y\u00f6netmek karma\u015f\u0131k ve hataya a\u00e7\u0131k olabilir. Her bir kapsay\u0131c\u0131y\u0131 ayr\u0131 ayr\u0131 ba\u015flatmak, a\u011flar\u0131n\u0131 yap\u0131land\u0131rmak, ba\u011f\u0131ml\u0131l\u0131klar\u0131 y\u00f6netmek ve do\u011fru s\u0131rada \u00e7al\u0131\u015ft\u0131rmak zaman al\u0131c\u0131d\u0131r. Bu durum, \u00f6zellikle mikroservis mimarileri benimsendi\u011finde veya geli\u015ftirme ortamlar\u0131nda h\u0131zl\u0131 iterasyonlar gerekti\u011finde b\u00fcy\u00fck bir engel te\u015fkil eder.<\/p>\n<h4>Docker Compose&#8217;un Avantajlar\u0131<\/h4>\n<p>Docker Compose, bu zorluklar\u0131 a\u015fmak i\u00e7in tasarlanm\u0131\u015ft\u0131r. Temel avantajlar\u0131 \u015funlard\u0131r:<\/p>\n<ul>\n<li><b>Basit Tan\u0131mlama:<\/b> T\u00fcm uygulama y\u0131\u011f\u0131n\u0131 tek bir <code>docker-compose.yml<\/code> dosyas\u0131 ile tan\u0131mlan\u0131r.<\/li>\n<li><b>Kolay Y\u00f6netim:<\/b> Tek bir komutla t\u00fcm uygulamay\u0131 ba\u015flatma, durdurma ve yeniden olu\u015fturma imkan\u0131 sunar.<\/li>\n<li><b>\u0130zolasyon ve Ta\u015f\u0131nabilirlik:<\/b> Servisler birbirinden izole edilmi\u015f kapsay\u0131c\u0131larda \u00e7al\u0131\u015f\u0131r ve Compose dosyas\u0131 ile her ortamda tutarl\u0131 bir \u015fekilde da\u011f\u0131t\u0131labilir.<\/li>\n<li><b>H\u0131zl\u0131 Geli\u015ftirme D\u00f6ng\u00fcs\u00fc:<\/b> De\u011fi\u015fiklikler yap\u0131ld\u0131\u011f\u0131nda uygulamay\u0131 h\u0131zl\u0131ca yeniden ba\u015flatma ve test etme olana\u011f\u0131 sunar.<\/li>\n<li><b>A\u011f Y\u00f6netimi:<\/b> Servisler aras\u0131nda otomatik a\u011f olu\u015fturur ve DNS tabanl\u0131 servis ke\u015ffi sa\u011flar.<\/li>\n<\/ul>\n<h3>Docker Compose Kurulumu ve Temel Bile\u015fenleri<\/h3>\n<p>Docker Compose&#8217;u kullanmaya ba\u015flamak olduk\u00e7a basittir. Genellikle Docker Desktop ile birlikte gelir veya ayr\u0131 olarak kurulabilir. Temel olarak, uygulaman\u0131z\u0131n yap\u0131land\u0131rmas\u0131n\u0131 tan\u0131mlayan <code>docker-compose.yml<\/code> dosyas\u0131na odaklanaca\u011f\u0131z.<\/p>\n<h4>Docker Compose Kurulumu<\/h4>\n<p>E\u011fer Docker Desktop kullan\u0131yorsan\u0131z (Windows veya macOS), Docker Compose genellikle otomatik olarak kurulmu\u015f olacakt\u0131r. Linux kullan\u0131c\u0131lar\u0131 i\u00e7in ise genellikle a\u015fa\u011f\u0131daki komutlarla kurulum yap\u0131labilir:<\/p>\n<pre><code class=\"language-bash\">\nsudo curl -L \"https:\/\/github.com\/docker\/compose\/releases\/download\/v2.20.2\/docker-compose-$(uname -s)-$(uname -m)\" -o \/usr\/local\/bin\/docker-compose\nsudo chmod +x \/usr\/local\/bin\/docker-compose\n<\/pre>\n<p><\/code><\/p>\n<p>Kurulumu do\u011frulamak i\u00e7in terminalde <code>docker compose version<\/code> komutunu \u00e7al\u0131\u015ft\u0131rabilirsiniz.<\/p>\n<h4>docker-compose.yml Dosyas\u0131: Kalp At\u0131\u015f\u0131<\/h4>\n<p><code>docker-compose.yml<\/code> dosyas\u0131, uygulaman\u0131z\u0131n kalbidir. Bu YAML dosyas\u0131, uygulaman\u0131zdaki her bir servisi, bu servislerin nas\u0131l olu\u015fturulaca\u011f\u0131n\u0131 (bir Dockerfile'dan veya bir imajdan), hangi portlar\u0131 kullanaca\u011f\u0131n\u0131, hangi a\u011flara ba\u011flanaca\u011f\u0131n\u0131 ve hangi birimleri (volumes) kullanaca\u011f\u0131n\u0131 tan\u0131mlar.<\/p>\n<p>\u00d6rnek bir <code>docker-compose.yml<\/code> yap\u0131s\u0131:<\/p>\n<pre><code class=\"language-yaml\">\nversion: '3.8' # Compose dosyas\u0131n\u0131n versiyonu\nservices:\n  web: # Servis ad\u0131\n    build: . # Mevcut dizindeki Dockerfile'dan imaj olu\u015ftur\n    ports:\n      - \"80:80\" # Host portu:Container portu\n    depends_on:\n      - db # db servisine ba\u011f\u0131ml\u0131l\u0131k\n  db: # \u0130kinci servis ad\u0131\n    image: postgres:13 # Docker Hub'dan imaj kullan\n    environment:\n      POSTGRES_DB: mydatabase\n      POSTGRES_USER: user\n      POSTGRES_PASSWORD: password\n    volumes:\n      - db-data:\/var\/lib\/postgresql\/data # Veri kal\u0131c\u0131l\u0131\u011f\u0131 i\u00e7in birim\nvolumes:\n  db-data: # Tan\u0131mlanm\u0131\u015f birim\n<\/pre>\n<p><\/code><\/p>\n<h4>Servisler, A\u011flar ve Birimler<\/h4>\n<ul>\n<li><b>Servisler (Services):<\/b> Uygulaman\u0131z\u0131n her bir bile\u015fenini temsil eder (\u00f6rne\u011fin, <code>web<\/code> sunucusu, <code>db<\/code> veritaban\u0131). Her servis, bir Docker imaj\u0131ndan veya bir Dockerfile'dan olu\u015fturulur.<\/li>\n<li><b>A\u011flar (Networks):<\/b> Docker Compose, servisler aras\u0131nda ileti\u015fimi sa\u011flamak i\u00e7in varsay\u0131lan olarak bir k\u00f6pr\u00fc a\u011f\u0131 (bridge network) olu\u015fturur. Servisler, bu a\u011f i\u00e7inde birbirlerinin isimleriyle eri\u015febilirler. \u0130sterseniz \u00f6zel a\u011flar da tan\u0131mlayabilirsiniz.<\/li>\n<li><b>Birimler (Volumes):<\/b> Kapsay\u0131c\u0131lar silindi\u011finde bile verilerin kal\u0131c\u0131 olmas\u0131n\u0131 sa\u011flar. Veritabanlar\u0131 gibi durumlu uygulamalar i\u00e7in kritik \u00f6neme sahiptir. <code>db-data:\/var\/lib\/postgresql\/data<\/code> \u00f6rne\u011finde, <code>db-data<\/code> isimli bir Docker birimi, PostgreSQL kapsay\u0131c\u0131s\u0131n\u0131n veri dizinine ba\u011flan\u0131r.<\/li>\n<\/ul>\n<h3>Basit Bir \u00c7ok Kapsay\u0131c\u0131l\u0131 Uygulama Olu\u015fturma (\u00d6rnek)<\/h3>\n<p>\u015eimdi, basit bir Python Flask web uygulamas\u0131 ve bir PostgreSQL veritaban\u0131ndan olu\u015fan \u00e7ok kapsay\u0131c\u0131l\u0131 bir uygulama olu\u015ftural\u0131m.<\/p>\n<h4>Uygulama Senaryosu: Web Uygulamas\u0131 ve Veritaban\u0131<\/h4>\n<p>Senaryomuzda, kullan\u0131c\u0131lar\u0131n ziyaret say\u0131s\u0131n\u0131 kaydeden basit bir Flask uygulamas\u0131 olacak. Bu uygulama, verilerini bir PostgreSQL veritaban\u0131nda saklayacak.<\/p>\n<h4>Dockerfile Olu\u015fturma<\/h4>\n<p>\u0130lk olarak, Flask uygulamam\u0131z i\u00e7in bir <code>Dockerfile<\/code> olu\u015ftural\u0131m. Uygulama kodumuz <code>app.py<\/code> ve ba\u011f\u0131ml\u0131l\u0131klar\u0131m\u0131z <code>requirements.txt<\/code> dosyalar\u0131nda olacak.<\/p>\n<p><code>app.py<\/code>:<\/p>\n<pre><code class=\"language-python\">\nfrom flask import Flask\nimport psycopg2\nimport os\n\napp = Flask(__name__)\n\n# Veritaban\u0131 ba\u011flant\u0131 bilgileri\nDB_HOST = os.environ.get('DB_HOST', 'db')\nDB_NAME = os.environ.get('POSTGRES_DB', 'mydatabase')\nDB_USER = os.environ.get('POSTGRES_USER', 'user')\nDB_PASSWORD = os.environ.get('POSTGRES_PASSWORD', 'password')\n\ndef get_db_connection():\n    conn = psycopg2.connect(\n        host=DB_HOST,\n        database=DB_NAME,\n        user=DB_USER,\n        password=DB_PASSWORD\n    )\n    return conn\n\n@app.route('\/')\ndef hello():\n    conn = get_db_connection()\n    cur = conn.cursor()\n    cur.execute('CREATE TABLE IF NOT EXISTS visits (id SERIAL PRIMARY KEY, count INTEGER);')\n    cur.execute('INSERT INTO visits (count) VALUES (1);')\n    cur.execute('SELECT SUM(count) FROM visits;')\n    total_visits = cur.fetchone()[0]\n    conn.commit()\n    cur.close()\n    conn.close()\n    return f\"Bu sayfay\u0131 ziyaret eden toplam ki\u015fi say\u0131s\u0131: {total_visits}\"\n\nif __name__ == '__main__':\n    app.run(host='0.0.0.0', port=5000)\n<\/pre>\n<p><\/code><\/p>\n<p><code>requirements.txt<\/code>:<\/p>\n<pre><code class=\"language-txt\">\nFlask\npsycopg2-binary\n<\/pre>\n<p><\/code><\/p>\n<p><code>Dockerfile<\/code>:<\/p>\n<pre><code class=\"language-dockerfile\">\nFROM python:3.9-slim-buster\nWORKDIR \/app\nCOPY requirements.txt .\nRUN pip install -r requirements.txt\nCOPY . .\nEXPOSE 5000\nCMD [\"python\", \"app.py\"]\n<\/pre>\n<p><\/code><\/p>\n<h4>docker-compose.yml Dosyas\u0131n\u0131 Yazma<\/h4>\n<p>\u015eimdi, <code>web<\/code> (Flask uygulamas\u0131) ve <code>db<\/code> (PostgreSQL) servislerini tan\u0131mlayan <code>docker-compose.yml<\/code> dosyas\u0131n\u0131 olu\u015ftural\u0131m:<\/p>\n<pre><code class=\"language-yaml\">\nversion: '3.8'\nservices:\n  web:\n    build: .\n    ports:\n      - \"5000:5000\"\n    environment:\n      # Ortam de\u011fi\u015fkenleri ile veritaban\u0131 ba\u011flant\u0131 bilgileri sa\u011flan\u0131r\n      DB_HOST: db # Servis ad\u0131 \u00fczerinden eri\u015fim\n      POSTGRES_DB: mydatabase\n      POSTGRES_USER: user\n      POSTGRES_PASSWORD: password\n    depends_on:\n      - db # 'db' servisi ba\u015flamadan 'web' servisi ba\u015flamaz\n    volumes:\n      - .\/app:\/app # Geli\u015ftirme i\u00e7in kod senkronizasyonu\n  db:\n    image: postgres:13\n    environment:\n      POSTGRES_DB: mydatabase\n      POSTGRES_USER: user\n      POSTGRES_PASSWORD: password\n    volumes:\n      - db_data:\/var\/lib\/postgresql\/data # Veri kal\u0131c\u0131l\u0131\u011f\u0131 i\u00e7in birim\nvolumes:\n  db_data: # Tan\u0131mlanm\u0131\u015f birim\n<\/pre>\n<p><\/code><\/p>\n<p>Bu yap\u0131land\u0131rma ile:<br \/>\n*   <code>web<\/code> servisi, mevcut dizindeki Dockerfile'dan olu\u015fturulur.<br \/>\n*   <code>db<\/code> servisi, <code>postgres:13<\/code> imaj\u0131ndan \u00e7ekilir.<br \/>\n*   <code>web<\/code> servisi, <code>db<\/code> servisine <code>DB_HOST: db<\/code> ile eri\u015febilir \u00e7\u00fcnk\u00fc ayn\u0131 a\u011f \u00fczerindeler ve Compose otomatik DNS sa\u011flar.<br \/>\n*   <code>depends_on: - db<\/code> ile <code>web<\/code> servisi ba\u015flamadan \u00f6nce <code>db<\/code> servisinin ba\u015flat\u0131lmas\u0131 sa\u011flan\u0131r.<br \/>\n*   <code>db_data<\/code> birimi, PostgreSQL verilerinin kal\u0131c\u0131 olmas\u0131n\u0131 sa\u011flar.<\/p>\n<h3>Docker Compose Komutlar\u0131 ve Y\u00f6netimi<\/h3>\n<p><code>docker-compose.yml<\/code> dosyam\u0131z\u0131 olu\u015fturduktan sonra, uygulamam\u0131z\u0131 y\u00f6netmek i\u00e7in birka\u00e7 temel Docker Compose komutu bilmemiz gerekir.<\/p>\n<h4>Uygulamay\u0131 Ba\u015flatma ve Durdurma<\/h4>\n<p>Uygulamay\u0131 ba\u015flatmak i\u00e7in, <code>docker-compose.yml<\/code> dosyas\u0131n\u0131n bulundu\u011fu dizinde a\u015fa\u011f\u0131daki komutu \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code class=\"language-bash\">\ndocker compose up -d\n<\/pre>\n<p><\/code><br \/>\n*   <code>up<\/code>: T\u00fcm servisleri olu\u015fturur ve ba\u015flat\u0131r.<br \/>\n*   <code>-d<\/code> (detach): Kapsay\u0131c\u0131lar\u0131 arka planda \u00e7al\u0131\u015ft\u0131r\u0131r, terminali serbest b\u0131rak\u0131r.<\/p>\n<p>Uygulaman\u0131n \u00e7al\u0131\u015f\u0131p \u00e7al\u0131\u015fmad\u0131\u011f\u0131n\u0131 kontrol etmek i\u00e7in taray\u0131c\u0131n\u0131zdan <code>http:\/\/localhost:5000<\/code> adresine gidebilirsiniz.<\/p>\n<p>Uygulamay\u0131 durdurmak ve kapsay\u0131c\u0131lar\u0131 kald\u0131rmak i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">\ndocker compose down\n<\/pre>\n<p><\/code><br \/>\n*   <code>down<\/code>: <code>up<\/code> ile ba\u015flat\u0131lan t\u00fcm servisleri durdurur ve kald\u0131r\u0131r. Varsay\u0131lan olarak birimleri (volumes) kald\u0131rmaz, bu sayede verileriniz g\u00fcvende kal\u0131r. Birimleri de kald\u0131rmak isterseniz <code>docker compose down --volumes<\/code> kullanabilirsiniz.<\/p>\n<h4>Servisleri Y\u00f6netme ve G\u00fcncelleme<\/h4>\n<p>*   <b>Servisleri Listeleme:<\/b> \u00c7al\u0131\u015fan servisleri ve durumlar\u0131n\u0131 g\u00f6rmek i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">\n    docker compose ps\n    <\/pre>\n<p><\/code><br \/>\n*   <b>Belirli Bir Servisi Yeniden Ba\u015flatma:<\/b> Sadece <code>web<\/code> servisini yeniden ba\u015flatmak i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">\n    docker compose restart web\n    <\/pre>\n<p><\/code><br \/>\n*   <b>Servisleri Yeniden Olu\u015fturma:<\/b> E\u011fer Dockerfile'\u0131n\u0131zda veya <code>docker-compose.yml<\/code> dosyan\u0131zda de\u011fi\u015fiklik yapt\u0131ysan\u0131z, servisleri yeniden olu\u015fturman\u0131z gerekebilir:<\/p>\n<pre><code class=\"language-bash\">\n    docker compose up --build -d\n    <\/pre>\n<p><\/code><br \/>\n    <code>--build<\/code> bayra\u011f\u0131, imajlar\u0131n yeniden olu\u015fturulmas\u0131n\u0131 sa\u011flar.<\/p>\n<h4>Loglar\u0131 G\u00f6r\u00fcnt\u00fcleme ve Sorun Giderme<\/h4>\n<p>Kapsay\u0131c\u0131lar\u0131n \u00e7\u0131kt\u0131lar\u0131n\u0131 (loglar\u0131n\u0131) g\u00f6rmek, sorun giderme i\u00e7in \u00e7ok \u00f6nemlidir.<br \/>\n*   T\u00fcm servislerin loglar\u0131n\u0131 g\u00f6rmek i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">\n    docker compose logs\n    <\/pre>\n<p><\/code><br \/>\n*   Belirli bir servisin (\u00f6rne\u011fin <code>web<\/code>) loglar\u0131n\u0131 takip etmek i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">\n    docker compose logs -f web\n    <\/pre>\n<p><\/code><br \/>\n    <code>-f<\/code> (follow) bayra\u011f\u0131, yeni loglar\u0131 ger\u00e7ek zamanl\u0131 olarak g\u00f6sterir.<\/p>\n<h3>Geli\u015fmi\u015f Docker Compose \u00d6zellikleri<\/h3>\n<p>Docker Compose, basit uygulamalar\u0131n \u00f6tesine ge\u00e7erek daha karma\u015f\u0131k senaryolar i\u00e7in de g\u00fc\u00e7l\u00fc \u00f6zellikler sunar.<\/p>\n<h4>Ortam De\u011fi\u015fkenleri ve .env Dosyalar\u0131<\/h4>\n<p>Hassas bilgileri (veritaban\u0131 \u015fifreleri gibi) <code>docker-compose.yml<\/code> dosyas\u0131na do\u011frudan yazmak yerine ortam de\u011fi\u015fkenleri kullanmak daha g\u00fcvenlidir. Docker Compose, <code>.env<\/code> dosyas\u0131n\u0131 otomatik olarak okur ve burada tan\u0131mlanan de\u011fi\u015fkenleri <code>docker-compose.yml<\/code> dosyas\u0131nda kullanman\u0131za olanak tan\u0131r.<\/p>\n<p><code>.env<\/code> dosyas\u0131 \u00f6rne\u011fi:<\/p>\n<pre><code class=\"language-txt\">\nPOSTGRES_DB=myprod_db\nPOSTGRES_USER=prod_user\nPOSTGRES_PASSWORD=secure_password\n<\/pre>\n<p><\/code><\/p>\n<p><code>docker-compose.yml<\/code> dosyas\u0131nda bu de\u011fi\u015fkenleri <code>$VARIABLE_NAME<\/code> veya <code>${VARIABLE_NAME}<\/code> \u015feklinde kullanabilirsiniz:<\/p>\n<pre><code class=\"language-yaml\">\n  db:\n    image: postgres:13\n    environment:\n      POSTGRES_DB: ${POSTGRES_DB}\n      POSTGRES_USER: ${POSTGRES_USER}\n      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}\n<\/pre>\n<p><\/code><\/p>\n<h4>Ba\u011f\u0131ml\u0131l\u0131klar ve Servis S\u0131ralamas\u0131<\/h4>\n<p><code>depends_on<\/code> anahtar\u0131, servisler aras\u0131ndaki ba\u015flang\u0131\u00e7 s\u0131ras\u0131n\u0131 belirtir. Ancak, bu sadece kapsay\u0131c\u0131lar\u0131n ba\u015flat\u0131lma s\u0131ras\u0131n\u0131 garanti eder, servisin tamamen haz\u0131r olmas\u0131n\u0131 de\u011fil. Bir veritaban\u0131n\u0131n ba\u015flat\u0131lmas\u0131 ve sorgu kabul etmeye ba\u015flamas\u0131 zaman alabilir. Bu t\u00fcr durumlarda, uygulamalar\u0131n\u0131z\u0131n veritaban\u0131na ba\u011flanmadan \u00f6nce bir \"sa\u011fl\u0131k kontrol\u00fc\" veya bekleme mekanizmas\u0131 uygulamas\u0131 gerekebilir (\u00f6rne\u011fin, bir bekleme script'i kullanmak).<\/p>\n<h4>\u00d6l\u00e7eklendirme ve Profil Kullan\u0131m\u0131<\/h4>\n<p>*   <b>\u00d6l\u00e7eklendirme:<\/b> Bir servisin birden fazla kopyas\u0131n\u0131 \u00e7al\u0131\u015ft\u0131rmak i\u00e7in <code>docker compose up<\/code> komutuna <code>--scale<\/code> bayra\u011f\u0131n\u0131 ekleyebilirsiniz:<\/p>\n<pre><code class=\"language-bash\">\n    docker compose up --scale web=3 -d\n    <\/pre>\n<p><\/code><br \/>\n    Bu, <code>web<\/code> servisinin 3 kopyas\u0131n\u0131 \u00e7al\u0131\u015ft\u0131r\u0131r.<br \/>\n*   <b>Profiller (Profiles):<\/b> Farkl\u0131 ortamlar (geli\u015ftirme, test) veya \u00f6zellikler i\u00e7in farkl\u0131 servis setlerini tan\u0131mlamak i\u00e7in profilleri kullanabilirsiniz. \u00d6rne\u011fin, geli\u015ftirme ortam\u0131nda ek bir hata ay\u0131klama servisi \u00e7al\u0131\u015ft\u0131rmak isteyebilirsiniz.<\/p>\n<pre><code class=\"language-yaml\">\nversion: '3.8'\nservices:\n  web:\n    # ...\n  db:\n    # ...\n  debug_tool:\n    profiles: [\"dev\"] # Sadece 'dev' profili aktifken \u00e7al\u0131\u015f\u0131r\n    image: some_debug_image\n    # ...\n<\/pre>\n<p><\/code><br \/>\n<code>debug_tool<\/code> servisini \u00e7al\u0131\u015ft\u0131rmak i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">\ndocker compose --profile dev up -d\n<\/pre>\n<p><\/code><\/p>\n<h3>En \u0130yi Uygulamalar ve \u0130pu\u00e7lar\u0131<\/h3>\n<p>Docker Compose'u verimli ve g\u00fcvenli bir \u015fekilde kullanmak i\u00e7in baz\u0131 en iyi uygulamalar\u0131 takip etmek \u00f6nemlidir.<\/p>\n<h4>\u00dcretim Ortam\u0131nda Dikkat Edilmesi Gerekenler<\/h4>\n<p>Docker Compose, geli\u015ftirme ve test ortamlar\u0131 i\u00e7in harika bir ara\u00e7 olsa da, b\u00fcy\u00fck \u00f6l\u00e7ekli \u00fcretim ortamlar\u0131 i\u00e7in genellikle Docker Swarm veya Kubernetes gibi orkestrasyon ara\u00e7lar\u0131 tercih edilir. Ancak, k\u00fc\u00e7\u00fck ve orta \u00f6l\u00e7ekli uygulamalar i\u00e7in veya tek sunuculu da\u011f\u0131t\u0131mlarda Compose hala kullan\u0131labilir. \u00dcretimde kullan\u0131rken \u015funlara dikkat edin:<\/p>\n<ul>\n<li><b>G\u00fcvenlik:<\/b> Hassas bilgileri <code>.env<\/code> dosyalar\u0131yla veya Docker Secret'lar ile y\u00f6netin.<\/li>\n<li><b>Kal\u0131c\u0131l\u0131k:<\/b> Veri kal\u0131c\u0131l\u0131\u011f\u0131 i\u00e7in birimleri do\u011fru \u015fekilde yap\u0131land\u0131r\u0131n ve yedeklemeyi unutmay\u0131n.<\/li>\n<li><b>Kaynak Y\u00f6netimi:<\/b> Servisler i\u00e7in CPU ve bellek limitleri belirleyin (<code>deploy<\/code> anahtar\u0131 alt\u0131nda).<\/li>\n<li><b>Sa\u011fl\u0131k Kontrolleri:<\/b> Servislerin ger\u00e7ekten haz\u0131r olup olmad\u0131\u011f\u0131n\u0131 kontrol etmek i\u00e7in sa\u011fl\u0131k kontrolleri ekleyin.<\/li>\n<\/ul>\n<h4>G\u00fcvenlik \u0130pu\u00e7lar\u0131<\/h4>\n<p>*   <b>Minimum Yetki Prensibi:<\/b> Kapsay\u0131c\u0131lar\u0131 <code>root<\/code> kullan\u0131c\u0131s\u0131 yerine m\u00fcmk\u00fcnse ayr\u0131cal\u0131ks\u0131z bir kullan\u0131c\u0131 ile \u00e7al\u0131\u015ft\u0131r\u0131n.<br \/>\n*   <b>\u0130maj G\u00fcvenli\u011fi:<\/b> G\u00fcvenilir ve g\u00fcncel temel imajlar kullan\u0131n. Bilinen g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 tarayan ara\u00e7lar kullan\u0131n.<br \/>\n*   <b>Port Y\u00f6netimi:<\/b> Sadece gerekli portlar\u0131 d\u0131\u015far\u0131ya a\u00e7\u0131n.<br \/>\n*   <b>Ortam De\u011fi\u015fkenleri:<\/b> Hassas verileri <code>docker-compose.yml<\/code> i\u00e7inde a\u00e7\u0131k\u00e7a belirtmeyin, <code>.env<\/code> dosyalar\u0131 veya daha iyisi Docker Secret'lar kullan\u0131n.<\/p>\n<h4>Versiyon Kontrol\u00fc ile Entegrasyon<\/h4>\n<p><code>docker-compose.yml<\/code> dosyas\u0131 ve ilgili Dockerfile'lar, uygulaman\u0131z\u0131n kod taban\u0131n\u0131n bir par\u00e7as\u0131 olarak kabul edilmeli ve Git gibi bir versiyon kontrol sistemiyle y\u00f6netilmelidir. Bu, uygulaman\u0131z\u0131n farkl\u0131 versiyonlar\u0131 aras\u0131nda tutarl\u0131l\u0131k sa\u011flar ve tak\u0131m \u00e7al\u0131\u015fmas\u0131n\u0131 kolayla\u015ft\u0131r\u0131r. <code>.env<\/code> dosyalar\u0131 genellikle versiyon kontrol\u00fcne dahil edilmez, bunun yerine \u00f6rnek bir <code>.env.example<\/code> dosyas\u0131 sa\u011flan\u0131r.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>Docker Compose, \u00e7ok kapsay\u0131c\u0131l\u0131 uygulamalar\u0131n geli\u015ftirme ve y\u00f6netim s\u00fcre\u00e7lerini \u00f6nemli \u00f6l\u00e7\u00fcde basitle\u015ftiren vazge\u00e7ilmez bir ara\u00e7t\u0131r. Tek bir YAML dosyas\u0131 ile karma\u015f\u0131k uygulama mimarilerini tan\u0131mlama, tek komutla t\u00fcm y\u0131\u011f\u0131n\u0131 ba\u015flatma ve kolayca y\u00f6netme yetene\u011fi, geli\u015ftiricilere b\u00fcy\u00fck esneklik ve verimlilik sa\u011flar. Bu rehberde \u00f6\u011frendi\u011finiz temel bilgilerle, kendi \u00e7ok kapsay\u0131c\u0131l\u0131 Docker uygulamalar\u0131n\u0131z\u0131 ba\u015far\u0131yla olu\u015fturabilir ve y\u00f6netebilirsiniz. Docker Compose'u projelerinize entegre ederek, uygulama geli\u015ftirme s\u00fcre\u00e7lerinizde zaman ve emekten tasarruf edin, daha tutarl\u0131 ve ta\u015f\u0131nabilir ortamlar yarat\u0131n.<\/p>\n<h3>S\u0131k Sorulan Sorular (SSS)<\/h3>\n<dl>\n<dt><b>Docker Compose ile Dockerfile aras\u0131ndaki fark nedir?<\/b><\/dt>\n<dd><b>Dockerfile<\/b>, tek bir Docker imaj\u0131n\u0131n nas\u0131l olu\u015fturulaca\u011f\u0131n\u0131 ad\u0131m ad\u0131m tan\u0131mlayan bir betiktir. <b>Docker Compose<\/b> ise, birden fazla Docker imaj\u0131n\u0131 (servisi) bir araya getirerek \u00e7ok kapsay\u0131c\u0131l\u0131 bir uygulaman\u0131n nas\u0131l \u00e7al\u0131\u015ft\u0131r\u0131laca\u011f\u0131n\u0131 (a\u011flar, birimler, ba\u011f\u0131ml\u0131l\u0131klar vb.) tan\u0131mlayan bir YAML dosyas\u0131d\u0131r.<\/dd>\n<dt><b>Docker Compose \u00fcretim ortam\u0131nda kullan\u0131labilir mi?<\/b><\/dt>\n<dd>Evet, k\u00fc\u00e7\u00fck ve orta \u00f6l\u00e7ekli uygulamalar veya tek sunuculu da\u011f\u0131t\u0131mlar i\u00e7in \u00fcretimde kullan\u0131labilir. Ancak, y\u00fcksek kullan\u0131labilirlik, otomatik \u00f6l\u00e7eklendirme ve karma\u015f\u0131k orkestrasyon gerektiren b\u00fcy\u00fck \u00f6l\u00e7ekli \u00fcretim ortamlar\u0131 i\u00e7in genellikle Docker Swarm veya Kubernetes gibi daha geli\u015fmi\u015f ara\u00e7lar tercih edilir.<\/dd>\n<dt><b>Veri kal\u0131c\u0131l\u0131\u011f\u0131n\u0131 Docker Compose ile nas\u0131l sa\u011flar\u0131m?<\/b><\/dt>\n<dd>Veri kal\u0131c\u0131l\u0131\u011f\u0131 i\u00e7in <code>volumes<\/code> anahtar\u0131n\u0131 kullan\u0131rs\u0131n\u0131z. <code>docker-compose.yml<\/code> dosyan\u0131zda adland\u0131r\u0131lm\u0131\u015f birimler (named volumes) tan\u0131mlayarak veya host makinenizdeki bir dizini kapsay\u0131c\u0131ya ba\u011flayarak (bind mounts) verilerin kapsay\u0131c\u0131lar silinse bile korunmas\u0131n\u0131 sa\u011flayabilirsiniz.<\/dd>\n<dt><b>Servisler aras\u0131nda ba\u011f\u0131ml\u0131l\u0131klar\u0131 nas\u0131l y\u00f6netirim?<\/b><\/dt>\n<dd><code>depends_on<\/code> anahtar\u0131n\u0131 kullanarak servisler aras\u0131ndaki ba\u015flang\u0131\u00e7 s\u0131ras\u0131n\u0131 belirleyebilirsiniz. Ancak bu, sadece kapsay\u0131c\u0131n\u0131n ba\u015flat\u0131lmas\u0131n\u0131 garanti eder, servisin tamamen haz\u0131r olmas\u0131n\u0131 de\u011fil. Daha sa\u011flam ba\u011f\u0131ml\u0131l\u0131k y\u00f6netimi i\u00e7in, uygulaman\u0131z\u0131n veritaban\u0131 gibi ba\u011f\u0131ml\u0131l\u0131klar\u0131n haz\u0131r olmas\u0131n\u0131 bekleyen bir mekanizma (\u00f6rne\u011fin, bir ba\u015flang\u0131\u00e7 beti\u011fi) eklemeniz \u00f6nerilir.<\/dd>\n<dt><b>Farkl\u0131 ortamlar i\u00e7in (geli\u015ftirme, \u00fcretim) farkl\u0131 yap\u0131land\u0131rmalar\u0131m varsa ne yapmal\u0131y\u0131m?<\/b><\/dt>\n<dd>Bunun i\u00e7in birka\u00e7 y\u00f6ntem vard\u0131r:<\/p>\n<ul>\n<li><b><code>.env<\/code> dosyalar\u0131:<\/b> Ortam de\u011fi\u015fkenlerini <code>.env<\/code> dosyalar\u0131nda tan\u0131mlayarak farkl\u0131 de\u011ferler sa\u011flayabilirsiniz.<\/li>\n<li><b>Birden fazla Compose dosyas\u0131:<\/b> <code>docker-compose.yml<\/code> (temel yap\u0131land\u0131rma) ve <code>docker-compose.override.yml<\/code> (ortama \u00f6zg\u00fc eklemeler\/ge\u00e7ersiz k\u0131lmalar) gibi dosyalar kullanabilirsiniz. Compose, <code>up<\/code> komutunda otomatik olarak bu dosyalar\u0131 birle\u015ftirir.<\/li>\n<li><b>Profiller (Profiles):<\/b> <code>profiles<\/code> anahtar\u0131n\u0131 kullanarak belirli servisleri sadece belirli profiller aktifken \u00e7al\u0131\u015facak \u015fekilde tan\u0131mlayabilirsiniz.<\/li>\n<\/ul>\n<\/dd>\n<\/dl>\n","protected":false},"excerpt":{"rendered":"Docker Compose ile \u00c7ok Kapsay\u0131c\u0131l\u0131 Uygulamalar\u0131 \u00c7al\u0131\u015ft\u0131rma Rehberi\nG\u00fcn\u00fcm\u00fcz\u00fcn modern uygulama mimarileri, genellikle birden fazla bile\u015fenin bir&#8230;","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":[1407],"tags":[],"class_list":{"0":"post-38492","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-docker","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>Docker Compose ile \u00c7ok Kapsay\u0131c\u0131l\u0131 Uygulamalar\u0131 \u00c7al\u0131\u015ft\u0131rma Rehberi - 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\/docker-compose-ile-cok-kapsayicili-uygulamalari-calistirma-rehberi\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Docker Compose ile \u00c7ok Kapsay\u0131c\u0131l\u0131 Uygulamalar\u0131 \u00c7al\u0131\u015ft\u0131rma Rehberi\" \/>\n<meta property=\"og:description\" content=\"Docker Compose ile \u00c7ok Kapsay\u0131c\u0131l\u0131 Uygulamalar\u0131 \u00c7al\u0131\u015ft\u0131rma Rehberi G\u00fcn\u00fcm\u00fcz\u00fcn modern uygulama mimarileri, genellikle birden fazla bile\u015fenin bir...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/docker-compose-ile-cok-kapsayicili-uygulamalari-calistirma-rehberi\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-02-01T09:30:35+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=\"14 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/docker-compose-ile-cok-kapsayicili-uygulamalari-calistirma-rehberi\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/docker-compose-ile-cok-kapsayicili-uygulamalari-calistirma-rehberi\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Docker Compose ile \u00c7ok Kapsay\u0131c\u0131l\u0131 Uygulamalar\u0131 \u00c7al\u0131\u015ft\u0131rma Rehberi\",\"datePublished\":\"2026-02-01T09:30:35+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/docker-compose-ile-cok-kapsayicili-uygulamalari-calistirma-rehberi\/\"},\"wordCount\":2229,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Docker\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/docker-compose-ile-cok-kapsayicili-uygulamalari-calistirma-rehberi\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/docker-compose-ile-cok-kapsayicili-uygulamalari-calistirma-rehberi\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/docker-compose-ile-cok-kapsayicili-uygulamalari-calistirma-rehberi\/\",\"name\":\"Docker Compose ile \u00c7ok Kapsay\u0131c\u0131l\u0131 Uygulamalar\u0131 \u00c7al\u0131\u015ft\u0131rma Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-02-01T09:30:35+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/docker-compose-ile-cok-kapsayicili-uygulamalari-calistirma-rehberi\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/docker-compose-ile-cok-kapsayicili-uygulamalari-calistirma-rehberi\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/docker-compose-ile-cok-kapsayicili-uygulamalari-calistirma-rehberi\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Docker Compose ile \u00c7ok Kapsay\u0131c\u0131l\u0131 Uygulamalar\u0131 \u00c7al\u0131\u015ft\u0131rma Rehberi\"}]},{\"@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":"Docker Compose ile \u00c7ok Kapsay\u0131c\u0131l\u0131 Uygulamalar\u0131 \u00c7al\u0131\u015ft\u0131rma Rehberi - 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\/docker-compose-ile-cok-kapsayicili-uygulamalari-calistirma-rehberi\/","og_locale":"tr_TR","og_type":"article","og_title":"Docker Compose ile \u00c7ok Kapsay\u0131c\u0131l\u0131 Uygulamalar\u0131 \u00c7al\u0131\u015ft\u0131rma Rehberi","og_description":"Docker Compose ile \u00c7ok Kapsay\u0131c\u0131l\u0131 Uygulamalar\u0131 \u00c7al\u0131\u015ft\u0131rma Rehberi G\u00fcn\u00fcm\u00fcz\u00fcn modern uygulama mimarileri, genellikle birden fazla bile\u015fenin bir...","og_url":"https:\/\/fatihsoysal.com\/blog\/docker-compose-ile-cok-kapsayicili-uygulamalari-calistirma-rehberi\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-02-01T09:30:35+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"14 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/docker-compose-ile-cok-kapsayicili-uygulamalari-calistirma-rehberi\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/docker-compose-ile-cok-kapsayicili-uygulamalari-calistirma-rehberi\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Docker Compose ile \u00c7ok Kapsay\u0131c\u0131l\u0131 Uygulamalar\u0131 \u00c7al\u0131\u015ft\u0131rma Rehberi","datePublished":"2026-02-01T09:30:35+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/docker-compose-ile-cok-kapsayicili-uygulamalari-calistirma-rehberi\/"},"wordCount":2229,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Docker"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/docker-compose-ile-cok-kapsayicili-uygulamalari-calistirma-rehberi\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/docker-compose-ile-cok-kapsayicili-uygulamalari-calistirma-rehberi\/","url":"https:\/\/fatihsoysal.com\/blog\/docker-compose-ile-cok-kapsayicili-uygulamalari-calistirma-rehberi\/","name":"Docker Compose ile \u00c7ok Kapsay\u0131c\u0131l\u0131 Uygulamalar\u0131 \u00c7al\u0131\u015ft\u0131rma Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-02-01T09:30:35+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/docker-compose-ile-cok-kapsayicili-uygulamalari-calistirma-rehberi\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/docker-compose-ile-cok-kapsayicili-uygulamalari-calistirma-rehberi\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/docker-compose-ile-cok-kapsayicili-uygulamalari-calistirma-rehberi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Docker Compose ile \u00c7ok Kapsay\u0131c\u0131l\u0131 Uygulamalar\u0131 \u00c7al\u0131\u015ft\u0131rma Rehberi"}]},{"@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\/38492","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=38492"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/38492\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=38492"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=38492"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=38492"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}