Ulu Önder Mustafa Kemal Atatürk'ü aramızdan ayrılışının 88. yılında saygı, minnet ve özlemle anıyoruz.

Docker Compose ile web uygulaması ve veritabanı ortamı kurmak

elif.aydin Mid 18 saat önce · 15 görüntülenme

"Benim bilgisayarımda çalışıyordu" sorununu çözmenin en pratik yolu, geliştirme ortamını Docker Compose ile tanımlamak. Bu rehberde bir web uygulaması ile PostgreSQL veritabanını birlikte ayağa kaldıran basit bir yapı kuracağız.

Dosya yapısı

proje/
├── compose.yaml
├── .env
└── app/
    ├── Dockerfile
    └── ... (uygulama kodu)

compose.yaml

services:
  app:
    build: ./app
    ports:
      - "8080:8080"
    environment:
      DATABASE_URL: postgres://${DB_USER}:${DB_PASSWORD}@db:5432/${DB_NAME}
    depends_on:
      db:
        condition: service_healthy
    restart: unless-stopped

  db:
    image: postgres:16
    environment:
      POSTGRES_USER: ${DB_USER}
      POSTGRES_PASSWORD: ${DB_PASSWORD}
      POSTGRES_DB: ${DB_NAME}
    volumes:
      - db-data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U ${DB_USER}"]
      interval: 5s
      retries: 10
    restart: unless-stopped

volumes:
  db-data:

.env

DB_USER=uygulama
DB_PASSWORD=guclu-bir-sifre
DB_NAME=uygulama

.env dosyasını Git'e ekleme; yerine örnek değerlerle .env.example paylaş.

Önemli noktalar

  • Servis adı = adres. Uygulama veritabanına localhost ile değil, db adıyla bağlanır. Compose, servisleri aynı ağa koyar ve isimle çözer.
  • Volume şart. db-data olmadan konteyner silinince veritabanı da silinir.
  • depends_on + healthcheck. Sadece depends_on veritabanının başladığını garanti eder, hazır olduğunu değil. Healthcheck koşulu bu farkı kapatır.
  • Veritabanı portunu dışarı açma. Uygulama zaten iç ağdan erişiyor. Bilgisayarından bağlanman gerekiyorsa 127.0.0.1:5432:5432 şeklinde sadece yerel arayüze aç.

Sık kullanılan komutlar

docker compose up -d          # arka planda başlat
docker compose logs -f app    # uygulama loglarını izle
docker compose exec db psql -U uygulama   # veritabanına bağlan
docker compose down           # durdur (veriler kalır)
docker compose down -v        # durdur ve volume'ları SİL

Üretimde

Bu yapı geliştirme için ideal. Üretimde ek olarak: önünde bir ters vekil (Nginx, Caddy, Traefik) ve TLS, şifreleri ortam dosyası yerine secret yönetimi, imaj sürümlerini sabitleme ve veritabanı için düzenli yedek planla.

Compose ile kurduğunuz yapılarda karşılaştığınız sorunları bu başlıkta paylaşabilirsiniz.

0

0 cevap

Henüz cevap yok. İlk cevabı sen yaz.

Cevap yaz

Cevap yazmak için giriş yapmalısın.

Konu bilgisi
  • Açılış10.11.2026
  • Son etkinlik18 saat önce
  • Cevap0
  • Görüntülenme15
  • Beğeni0
Yeni konu aç