Docker’da karşılaştığım problemler ve çözümleri

less than 1 minute read

docker-compose’da postgres environment variable tanımlamak

POSTGRES_USER ve POSTGRES_PASSWORD yazılırken tırnak kullanılmaz. Çevre değişkenlerinin sırası da yerine göre önem arz edebilir. Örnek bir servis yazalım,

  db:
    image: postgres
    environment:
      - POSTGRES_DB=database_name
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=1234
      - POSTGRES_HOST=127.0.0.1

Django Settings’te Host tanımlaması

Eğer Django ile beraber kullandığımız veritabanını da dockerize etmişsek Django ayarlarında dikkat etmemiz gereken bir durum var. settings.py içerisindeki HOST alanına docker kullanmadan olduğu gibi “localhost” yazdığımızda Django veritabanına bağlanamayacaktır. Sebebi, konteynırların ayağa kalktıktan sonra Docker’ın içerisindeki network’ü kullanmalarıdır. Her konteynır kendisini bir bilgisayar zannettiğinden, localhost’u gördüğü zaman aynı konteynır içerisindeki bir servisi arar ve doğal olarak bulamaz zira veritabanı sunucusu başka bir konteynırın içerisindedir.

Burada yapmamız gereken host’u localhost olarak değil başka bir docker konteynırını işaret edecek şekilde ayarlamak. Bunu yapmak ise gayet basit , ** settings.py içerisindeki HOST alanına docker-compose.yml dosyası içerisindeki servis tanımlarında veritabanı servisine verdiğimiz ismi yazıyoruz. **

Hemen örnek docker-compose ve settings.py konfigürasyonlarını aşağıya yazalım ;

docker-compose.yml :

services:
  db: # <----- Veritabanını servisini db ismiyle oluşturduk.
    image: postgres
    environment:
      - POSTGRES_DB=database_name
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=1234
      - POSTGRES_HOST=127.0.0.1
DATABASES = {
    'default': {
        'ENGINE':'django.db.backends.postgresql',
        'NAME':'database_name',
        'USER':'postgres',
        'PASSWORD':'1234',
        'PORT' : 5432,
        'HOST': 'db', # <------- docker-compose.yaml içerisindeki veritabanı servisinin ismini yazdık.
        'ATOMIC_REQUESTS': True,
    },
}

Categories:

Updated:

Leave a comment