Forum
Soru Sor

titantonnyKullanıcı·24.06.2026 22:33

Docker Compose Nedir? PHP, Nginx ve MySQL ile Basit Örnek

1 görüntülenme 0 beğeni 0 cevap
Docker Compose, bir uygulamanın birden fazla container’dan oluşan yapısını tek YAML dosyasında tanımlamayı sağlıyor. PHP uygulaması, Nginx, MySQL ve Redis gibi servisleri ayrı ayrı uzun komutlarla başlatmak yerine aynı proje içinde yönetmek özellikle geliştirme ortamında işleri kolaylaştırıyor.

Basit mantık şu: Her bileşen bir “service”, kalıcı veriler “volume”, servislerin birbiriyle konuştuğu yapı ise “network” olarak tanımlanıyor. Güncel kullanımda komut `docker compose` şeklinde; eski `docker-compose` bağımsız aracı daha çok geriye dönük uyumluluk için görülüyor.

Örnek bir `compose.yaml`:

yaml
services:
  app:
    image: php:8.3-fpm
    working_dir: /var/www/html
    volumes:
      - ./:/var/www/html

  nginx:
    image: nginx:alpine
    ports:
      - "8080:80"
    volumes:
      - ./:/var/www/html
      - ./docker/nginx.conf:/etc/nginx/conf.d/default.conf:ro
    depends_on:
      - app

  db:
    image: mysql:8.4
    environment:
      MYSQL_DATABASE: uygulama
      MYSQL_USER: uygulama
      MYSQL_PASSWORD: gelistirme-parolasi
      MYSQL_ROOT_PASSWORD: root-parolasi
    volumes:
      - mysql_data:/var/lib/mysql

volumes:
  mysql_data:


Servisleri başlatmak için:

bash
docker compose up -d
docker compose ps
docker compose logs -f


`depends_on`, container başlatma sırasına yardımcı olur fakat veritabanının bağlantı kabul etmeye hazır olduğunu tek başına garanti etmez. Gerçek projede healthcheck eklemek ve uygulamanın bağlantı retry mekanizmasını kullanmak daha doğru.

Dikkat ettiğim birkaç nokta:

- Parolaları gerçek üretim değerleriyle repoya koymamak
- Veritabanı verisini named volume içinde tutmak
- Geliştirme ve üretim Compose ayarlarını ayırmak
- Image sürümlerini tamamen belirsiz bırakmamak
- Container loglarını düzenli kontrol etmek
- `docker compose down -v` komutunun volume’leri silebileceğini unutmamak

Compose yalnızca geliştirme için değil, test ve küçük dağıtımlar için de kullanılabilir. Ancak production ortamında yedekleme, secret yönetimi, gözlemleme ve kesintisiz deploy ayrıca planlanmalı.

Takım içinde aynı Compose dosyasını kullanmak “bende çalışıyor” sorununu azaltıyor, fakat host işletim sistemi ve CPU mimarisi yine fark yaratabilir. Apple Silicon ile Linux sunucu arasında bazı image’ların platform desteği değişebiliyor. README içine gereken Docker sürümünü, ilk kurulum komutlarını ve veritabanı hazırlama adımını yazmak yeni geliştiricinin projeyi daha hızlı ayağa kaldırmasını sağlar.

Docker Compose kullanırken en çok hangi serviste zorlandınız? PHP-FPM ve Nginx yapılandırması için kullandığınız daha temiz bir klasör düzeni varsa paylaşır mısınız?

Cevaplar

0 yanıt
Bu konuda henüz cevap yok.