Mehmet Yerli

Mehmet Yerli

Maden Mühendisi & Yazılım Geliştirme Uzmanı

PostgreSQL'i Docker ile Kurma ve Django'ya Entegre Etme

Bu rehber, PostgreSQL'i Docker üzerinde çalıştırmayı ve Django projesine entegre etmeyi adım adım anlatır.


1. Gereksinimler

Gerekli Araçlar:

  • Docker
  • Python 3 ve Django
  • Docker Compose (Docker Desktop ile birlikte gelir)

Kontroller:

# Docker ve Docker Compose sürüm kontrolü
docker --version
docker-compose --version

2. Docker ile PostgreSQL Kurulumu

Adım 1: docker-compose.yml Dosyasını Oluşturma

Proje klasörünüzde bir docker-compose.yml dosyası oluşturun ve aşağıdaki içeriği ekleyin:

version: '3.8'

services:
  postgres:
    image: postgres:latest
    container_name: postgres-container
    restart: always
    environment:
      POSTGRES_USER: kullanici_adi
      POSTGRES_PASSWORD: sifre
      POSTGRES_DB: veritabani_adi
    ports:
      - "5432:5432"
    volumes:
      - postgres-data:/var/lib/postgresql/data

volumes:
  postgres-data:

Adım 2: PostgreSQL Container'ını Başlatma

Docker Compose ile PostgreSQL'i çalıştırın:

docker-compose up -d

Bu komut, PostgreSQL'i Docker üzerinde çalıştırır ve belirtilen ayarlarla yapılandırır: - Kullanıcı Adı: POSTGRES_USER - Şifre: POSTGRES_PASSWORD - Veritabanı: POSTGRES_DB

Container'ın çalıştığını doğrulamak için:

docker ps

Adım 3: Veritabanına Erişim Testi

Docker container'ına erişmek için:

docker exec -it postgres-container psql -U kullanici_adi -d veritabani_adi

3. Django Projesine Entegrasyon

Adım 1: psycopg2 Kurulumu

PostgreSQL ile Django arasındaki bağlantıyı sağlamak için psycopg2 kütüphanesini yükleyin:

pip install psycopg2

Adım 2: settings.py Dosyasını Yapılandırma

Django projenizdeki settings.py dosyasını PostgreSQL ile çalışacak şekilde düzenleyin:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'veritabani_adi',         # POSTGRES_DB
        'USER': 'kullanici_adi',          # POSTGRES_USER
        'PASSWORD': 'sifre',              # POSTGRES_PASSWORD
        'HOST': 'localhost',              # Django Docker dışında çalışıyorsa
        'PORT': '5432',                   # Docker'da belirtilen port
    }
}

Eğer Django da Docker içinde çalışıyorsa HOST değerini postgres-container olarak ayarlayın:

'HOST': 'postgres-container',

Adım 3: Veritabanı Yapısını Hazırlama

Django veritabanı tablolarını oluşturmak için şu komutları çalıştırın:

python manage.py makemigrations
python manage.py migrate

Adım 4: Admin Kullanıcı Oluşturma

Django admin paneline erişim için bir yönetici hesabı oluşturun:

python manage.py createsuperuser

4. PostgreSQL ve Django ile Çalışma

Container Yönetimi

  • Container’ı Durdurmak: bash docker-compose down
  • Container’ı Yeniden Başlatmak: bash docker-compose up -d

Logları Kontrol Etme

PostgreSQL loglarını kontrol etmek için:

docker logs postgres-container

5. Sorun Giderme

Bağlantı Sorunları

  • Docker çalışıyor mu? bash docker ps
  • Port çakışması: Eğer 5432 başka bir uygulama tarafından kullanılıyorsa, docker-compose.yml dosyasında portu değiştirin: ```yaml ports:
    • "5433:5432" `` Django'da daPORTdeğerini5433` olarak değiştirin.

Yetkilendirme Hataları

  • PostgreSQL kullanıcı adı ve şifresini kontrol edin.
  • Container içinde şifreyi değiştirmek için: bash docker exec -it postgres-container psql -U kullanici_adi ALTER USER kullanici_adi PASSWORD 'yeni_sifre';

6. Özet

Bu rehber ile PostgreSQL'i Docker üzerinde çalıştırabilir ve Django projenizle entegre edebilirsiniz. Daha fazla bilgiye ihtiyacınız olursa, Docker PostgreSQL Belgeleri ve Django Veritabanı Ayarları bağlantılarını inceleyebilirsiniz.