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:
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 da
PORTdeğerini
5433` olarak değiştirin.
- "5433:5432"
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.
