Blogchevron_rightSunucu Yönetimichevron_rightDocker Compose ile Gelişmiş Veritabanı ve Uygulama Yönetimi

Docker Compose ile Gelişmiş Veritabanı ve Uygulama Yönetimi

S
Serversium
calendar_today11 Haziran 2026
schedule5 dk okuma
Docker Compose ile Gelişmiş Veritabanı ve Uygulama Yönetimi

Docker Compose ile Gelişmiş Veritabanı ve Uygulama Yönetimi

Docker Compose, modern yazılım geliştirme süreçlerinde veritabanları ve uygulamaların yönetimini kolaylaştıran güçlü bir araçtır. Bu rehberde, Docker Compose kullanarak profesyonel düzeyde veritabanı ve uygulama altyapısı oluşturmayı detaylı olarak inceleyeceğiz.

Docker Compose Nedir ve Neden Kullanılmalı?

Docker Compose, çoklu konteyner uygulamalarını tanımlamak ve çalıştırmak için kullanılan bir araçtır. Docker Compose nedir sorusunun cevabı, YAML formatında tanımlanan konfigürasyon dosyaları ile tüm servislerin tek bir komutla ayağa kaldırılabilmesidir. Yapılan araştırmalara göre, geliştiricilerin %78'i Docker Compose kullanarak geliştirme süresini %40'a varan oranlarda kısaltmaktadır.

Docker Compose'un Temel Avantajları

  • Tek Komutla Çalıştırma: docker-compose up komutu ile tüm servisler başlatılır
  • Bağımsızlık: Her servis kendi konteynerinde izole edilmiş şekilde çalışır
  • Kolay Ölçeklendirme: Servislerin horizontal olarak ölçeklenmesi mümkündür
  • Çevre Değişkeni Yönetimi: .env dosyaları ile konfigürasyon kolaylığı sağlar

Docker Compose ile Veritabanı Yapılandırması

Veritabanı yönetimi, her uygulama için kritik bir bileşendir. Docker Compose kullanarak MySQL, PostgreSQL, MongoDB ve Redis gibi popüler veritabanlarını kolayca yapılandırabilirsiniz. Özellikle InnoDB veritabanı yapılandırması konusunda Docker ortamında önemli optimizasyonlar yapılabilir.

MySQL/MariaDB Yapılandırması

Aşağıda Docker Compose ile MySQL veritabanı yapılandırmasının temel örnek kodunu inceleyebilirsiniz:

version: '3.8'
services:
  mysql:
    image: mysql:8.0
    container_name: mysql_db
    environment:
      MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
      MYSQL_DATABASE: ${DB_NAME}
      MYSQL_USER: ${DB_USER}
      MYSQL_PASSWORD: ${DB_PASSWORD}
    volumes:
      - mysql_data:/var/lib/mysql
    ports:
      - "3306:3306"
    networks:
      - app_network
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
      interval: 10s
      timeout: 5s
      retries: 5

PostgreSQL Yapılandırması

PostgreSQL, enterprise uygulamalar için tercih edilen bir veritabanıdır. Docker ortamında PostgreSQL kullanırken kalıcı veri depolama için volume tanımlaması kritik öneme sahiptir.

Gelişmiş Ağ Yapılandırması ve Servisler Arası İletişim

Docker Compose'da ağ yapılandırması, servislerin birbirleriyle güvenli ve verimli iletişim kurmasını sağlar. Varsayılan olarak, Compose tüm servisleri aynı ağa ekler ve hostname üzerinden erişim imkânı tanır.

Network Oluşturma ve Yönetimi

Gelişmiş ağ yapılandırması için özel ağlar oluşturulabilir. Bu sayede farklı ortamlar (geliştirme, test, prodüksiyon) için izole ağlar kurulabilir.

networks:
  app_network:
    driver: bridge
    ipam:
      config:
        - subnet: 172.28.0.0/16
  database_network:
    driver: bridge
    internal: true

Sunucu altyapınızda ağ güvenliği için sunucu yetkilendirme ve kullanıcı grupları konfigürasyonlarını da göz önünde bulundurmanızı öneririz.

Çoklu Servis Yapılandırması

Modern uygulamalar genellikle birden fazla servis gerektirir. Tam kapsamlı bir Docker Compose dosyası ile uygulama, veritabanı, cache ve message queue servislerini tek bir yapıda yönetebilirsiniz.

Örnek: Tam Stack Uygulama Yapılandırması

version: '3.8'
services:
  app:
    build: .
    container_name: application
    depends_on:
      - db
      - redis
    environment:
      - DATABASE_URL=postgres://user:pass@db:5432/mydb
      - REDIS_URL=redis://redis:6379
    networks:
      - frontend
      - backend

  db:
    image: postgres:15
    container_name: postgres_db
    volumes:
      - pg_data:/var/lib/postgresql/data
    networks:
      - backend

  redis:
    image: redis:7-alpine
    container_name: redis_cache
    networks:
      - backend

  nginx:
    image: nginx:latest
    container_name: nginx_proxy
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf:ro
    networks:
      - frontend

volumes:
  pg_data:
  mysql_data:

networks:
  frontend:
    driver: bridge
  backend:
    driver: bridge

Reverse Proxy Yapılandırması

Nginx reverse proxy kullanarak trafiği yönetmek önemlidir. Nginx reverse proxy header yönetimi konusunda detaylı bilgi alabilirsiniz.

Docker Compose vs LXC: Konteyner Teknolojileri Karşılaştırması

Konteyner teknolojileri arasında seçim yaparken projenizin gereksinimlerini değerlendirmeniz gerekir. Aşağıdaki karşılaştırma tablosu, Docker Compose ve LXC arasındaki farkları göstermektedir:

Özellik Docker Compose LXC/LXD
İzolasyon Seviyesi Container (Process-level) System-level (Tam OS)
Kaynak Tüketimi Düşük (~100-200MB) Yüksek (~500MB+)
Başlangıç Süresi Saniyeler Dakikalar
Ölçeklenebilirlik Çok Yüksek Orta
Kullanım Alanı Mikroservisler, Uygulama Tam sistem, Development
Yönetim Kolaylığı Kolay (YAML) Orta (CLI)

Daha detaylı bilgi için LXC vs Docker karşılaştırması yazımızı inceleyebilirsiniz.

Veritabanı Bağlantı Hataları ve Çözümleri

Docker Compose ortamında veritabanı bağlantı hataları sıkça karşılaşılan sorunlardandır. En yaygın hatalar ve çözümleri şunlardır:

  1. Connection Refused: Servislerin başlama sırası önemlidir. depends_on kullanarak servislerin doğru sırayla başlamasını sağlayın
  2. Authentication Failed: Kullanıcı adı ve şifrelerin .env dosyasında doğru tanımlandığından emin olun
  3. Network Issues: Servislerin aynı ağda olduğundan emin olun
  4. Volume Permissions: Volume izinlerini kontrol edin

Detaylı çözümler için Database connection refused çözümleri yazımızı okuyabilirsiniz.

Health Check ve İzleme

Production ortamlarında servislerin sağlığını izlemek kritik öneme sahiptir. Docker Compose, yerleşik healthcheck özelliği ile container sağlığını izlemeye olanak tanır.

Health Check Yapılandırması

services:
  postgres:
    image: postgres:15
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U postgres"]
      interval: 10s
      timeout: 5s
      retries: 5
      start_period: 10s

Harici izleme çözümleri için Uptime Robot hizmetimizi de değerlendirebilirsiniz.

Ortam Değişkenleri ve Konfigürasyon Yönetimi

Güvenli ve esnek bir konfigürasyon için ortam değişkenlerini doğru şekilde yönetmek önemlidir. .env dosyası kullanarak hassas bilgileri (şifreler, API anahtarları) Docker Compose dosyasından ayırabilirsiniz.

Örnek .env Dosyası

DB_ROOT_PASSWORD= güvenli_root_şifresi
DB_NAME=uygulama_db
DB_USER=app_user
DB_PASSWORD= güvenli_uygulama_şifresi
REDIS_PASSWORD= redis_şifresi

Alan adı ve DNS yapılandırması için alan adı kayıt hizmetlerimizden yararlanabilirsiniz.

Veri Kalıcılığı ve Yedekleme Stratejileri

Docker Compose'da veri kalıcılığı için volume'ların doğru yapılandır

library_booksBenzer İçerikler

Cloud Sunucu Nedir? Avantajları ve Detaylı Rehber
Sunucu Yönetimi
calendar_today5 Nisan 2026
schedule5 dk

Cloud Sunucu Nedir? Avantajları ve Detaylı Rehber

Cloud sunucular, dinamik kaynak dağıtımıyla işletmelerin kesintisiz büyümesini sağlar. Avantajlardan karşılaştırmalara tüm detaylar bu rehberde yer alıyor.

S
Serversiumarrow_forward
Linux vs Windows Sunucu: Hangisi Projeye Uygun?
Sunucu Yönetimi
calendar_today6 Nisan 2026
schedule5 dk

Linux vs Windows Sunucu: Hangisi Projeye Uygun?

Linux ve Windows Sunucu arasındaki teknik farkları, maliyet avantajlarını ve proje uyumluluğunu detaylı olarak karşılaştırıyoruz. Yazılım stack'inize en uygun işletim sistemini seçmek için kapsamlı rehberimizle doğru altyapı kararını verin.

S
Serversiumarrow_forward
Plesk Kurulumu - Ubuntu 24 Üzerinde Adım Adım Rehber
Sunucu Yönetimi
calendar_today16 Nisan 2026
schedule5 dk

Plesk Kurulumu - Ubuntu 24 Üzerinde Adım Adım Rehber

Ubuntu 24 üzerinde Plesk kurulumunu adım adım öğrenin. Bu rehberde sistem gereksinimleri, kurulum adımları ve temel yapılandırma ayarlarını bulabilirsiniz.

S
Serversiumarrow_forward