Docker Compose ile PostgreSQL kurulum rehberi

📅 8 Şubat 2026Emre Karabulut
⏱️ Yaklaşık 6 dakikalık okuma süresi

Docker Compose ile PostgreSQL Kurulum Rehberi

Veritabanı yönetimi, modern uygulama geliştirmenin temel taşlarından biridir. PostgreSQL, güçlü özellikleri ve sağlam yapısıyla popüler bir açık kaynak ilişkisel veritabanı sistemidir. Uygulamalarınızı geliştirirken veya dağıtırken PostgreSQL’i izole edilmiş ve yönetimi kolay bir ortamda çalıştırmak istediğinizde Docker Compose mükemmel bir çözümdür. Bu rehberde, Docker Compose kullanarak PostgreSQL veritabanını nasıl kuracağınızı adım adım inceleyeceğiz.

Neden Docker Compose ve PostgreSQL?

Docker Compose, çoklu container Docker uygulamalarını tanımlamak ve çalıştırmak için bir araçtır. Bir YAML dosyası kullanarak, uygulamanızın tüm servislerini (veritabanı, web sunucusu, backend API vb.) tek bir komutla ayağa kaldırabilirsiniz. PostgreSQL ile birlikte kullanıldığında başlıca avantajları şunlardır:

  • İzolasyon: Veritabanı ve uygulamanız ayrı container’larda çalışır, böylece bağımlılık çakışmaları önlenir.
  • Taşınabilirlik: Geliştirme, test ve üretim ortamları arasında tutarlı bir veritabanı kurulumu sağlar.
  • Kolay Kurulum: Karmaşık kurulum adımları yerine, basit bir YAML dosyası ile dakikalar içinde çalışır hale gelir.
  • Veri Kalıcılığı: Veritabanı verilerinizi host sisteminizde kalıcı olarak depolayabilirsiniz.

Ön Koşullar

Bu rehberi takip edebilmek için sisteminizde aşağıdaki bileşenlerin kurulu olması gerekmektedir:

  • Docker: Container teknolojisini çalıştıran ana platform.
  • Docker Compose: Çoklu container uygulamalarını yönetmek için kullanılan araç.

Eğer henüz kurulu değillerse, resmi Docker belgelerinden kurulum yönergelerini takip edebilirsiniz.

Proje Yapısı Oluşturma

İlk adım olarak, projeniz için bir dizin oluşturalım ve bu dizine geçiş yapalım:


mkdir postgres-docker-compose
cd postgres-docker-compose

Bu dizin içinde, Docker Compose ayarlarımızı tanımlayacağımız docker-compose.yml adında bir dosya oluşturacağız.

docker-compose.yml Dosyasını Yapılandırma

Şimdi, docker-compose.yml dosyasının içeriğini oluşturalım. Bu dosya, PostgreSQL servisimizi ve veri depolaması için gerekli olan bir volume’u tanımlayacak.


version: '3.8'

services:
  db:
    image: postgres:14-alpine
    container_name: my_postgres_db
    environment:
      POSTGRES_DB: mydatabase
      POSTGRES_USER: myuser
      POSTGRES_PASSWORD: mysecretpassword
    ports:
      - "5432:5432"
    volumes:
      - db_data:/var/lib/postgresql/data

volumes:
  db_data:

Yapılandırmanın Açıklaması:

  • version: '3.8': Docker Compose dosyasının versiyonunu belirtiriz. Genellikle en yeni stabil versiyonu kullanmak iyi bir uygulamadır.
  • services:: Uygulamamızın servislerini tanımladığımız bölümdür. Burada sadece db adında bir servisimiz var.
  • db:: PostgreSQL veritabanı servisimizdir.
    • image: postgres:14-alpine: PostgreSQL’in resmi Docker imajını kullanıyoruz. 14-alpine etiketi, PostgreSQL sürüm 14’ün Alpine Linux tabanlı daha küçük boyutlu bir imajını kullanacağımızı belirtir.
    • container_name: my_postgres_db: Bu servis için özel bir container adı tanımlarız. Bu, container’ı yönetmeyi kolaylaştırır.
    • environment:: PostgreSQL container’ının başlangıcında kullanılacak ortam değişkenlerini ayarlarız.
      • POSTGRES_DB: mydatabase: Oluşturulacak ilk veritabanının adını belirler.
      • POSTGRES_USER: myuser: Oluşturulacak ilk süper kullanıcı adını belirler.
      • POSTGRES_PASSWORD: mysecretpassword: Süper kullanıcının parolasını belirler. Üretim ortamlarında bu parolayı doğrudan YAML dosyasında tutmak yerine Docker secrets veya ortam değişkenlerini daha güvenli bir şekilde yöneten araçlar kullanmanız şiddetle tavsiye edilir.
    • ports: - "5432:5432": Host makinenizin 5432 portunu (PostgreSQL’in varsayılan portu), container’ın 5432 portuna yönlendirir. Bu sayede host makinenizden veritabanına erişebilirsiniz.
    • volumes: - db_data:/var/lib/postgresql/data: Veritabanı verilerini kalıcı olarak depolamak için bir Docker volume’u kullanırız. db_data adında bir volume oluşturulur ve bu volume container içindeki /var/lib/postgresql/data dizinine bağlanır. Bu sayede container silinse bile verileriniz kaybolmaz.
  • volumes:: Docker Compose tarafından yönetilecek volume’ları tanımladığımız bölümdür. Burada db_data adında bir volume tanımlanmıştır.

PostgreSQL Veritabanını Başlatma

docker-compose.yml dosyasını oluşturduktan sonra, aynı dizinde aşağıdaki komutu çalıştırarak PostgreSQL servisimizi başlatabiliriz:


docker-compose up -d
  • up: docker-compose.yml dosyasında tanımlanan servisleri oluşturur ve başlatır.
  • -d: (detached mode) Servisleri arka planda çalıştırır, böylece terminaliniz serbest kalır.

Komut başarıyla çalıştıktan sonra, PostgreSQL container’ı indirilecek (eğer henüz yoksa) ve başlatılacaktır.

Kurulumu Doğrulama ve Veritabanına Bağlanma

Servisin durumunu kontrol etmek için aşağıdaki komutu kullanabilirsiniz:


docker-compose ps

Çıktıda my_postgres_db container’ının durumunun Up olduğunu görmelisiniz.

Şimdi veritabanına bağlanmayı deneyelim. Container içindeki psql istemcisini kullanarak bağlanabiliriz:


docker exec -it my_postgres_db psql -U myuser -d mydatabase

Parola istendiğinde mysecretpassword girin. Başarılı bir bağlantıdan sonra, psql komut istemcisinde olduğunuzu göreceksiniz (örn: mydatabase=#). Buradan SQL sorgularınızı çalıştırabilirsiniz. Çıkmak için \q yazıp Enter’a basın.

Alternatif olarak, host makinenizden herhangi bir PostgreSQL istemcisi (örn: DBeaver, pgAdmin veya yerel psql kurulumu) kullanarak da bağlanabilirsiniz. Bağlantı detayları şu şekilde olacaktır:

  • Host: localhost (veya 127.0.0.1)
  • Port: 5432
  • Database: mydatabase
  • User: myuser
  • Password: mysecretpassword

PostgreSQL Servisini Durdurma ve Kaldırma

Servisleri durdurmak için:


docker-compose down

Bu komut, container’ları durdurur ve kaldırır ancak verilerin bulunduğu volume’u korur. Yani daha sonra tekrar docker-compose up -d komutunu çalıştırdığınızda verileriniz yerinde olacaktır.

Eğer container’ları ve bunlarla ilişkili volume’ları da tamamen kaldırmak istiyorsanız (yani tüm verileri silmek isterseniz):


docker-compose down -v

Dikkat: Bu komut, veritabanı verilerinizi kalıcı olarak silecektir!

Sonuç

Bu rehberde, Docker Compose kullanarak PostgreSQL veritabanını nasıl hızlı ve etkili bir şekilde kuracağınızı öğrendiniz. Bu kurulum, geliştirme ortamlarınızda veya küçük ölçekli projelerinizde PostgreSQL’i izole ve yönetilebilir bir şekilde çalıştırmanız için ideal bir temel sağlar. Unutmayın, üretim ortamları için güvenlik önlemlerini (güçlü parolalar, Docker secrets, ağ izolasyonu vb.) gözden geçirmeyi ihmal etmeyin.

155f52c7e9c3ea8a325b44ff056acd50611fa5e706241e72fc0165362c08111b?s=64&d=mm&r=g
Emre Karabulut
📊 Bu yazı 4 kez okundu.