Rehber Docker nedir ve konteyner içine PostgreSQL nasıl kurulur

Merhaba, bugünkü rehberimde Docker içinde nasıl PostgreSQL databaseleri oluşturulur onu anlatacağım.

Öncelikle neden böyle bir maceraya giririp, databaselerimizi (ya da programlarımızı) PostgreSQL içinde kullanmamızı daha sağlıklı olacağına değinmek istiyorum.

Neden Docker?


Docker'ın ortaya çıkışı ve her yere girmesi insanların sanal makinelerden sıkılmasıyla başladı, sanal makinelerden sıkılma sebebimiz ise sanal makinelerin ağır olmalarıydı.

Native sistemler üzerine genel olarak ya database kurulmaz ya da o sistem sadece o amaçla kullanılır çünkü sistemde yaşanabilecek herhangi bir arıza noktasının orayı da etkilemesi, sistemde çalışacak başka bir programın vereceği bir hatayla bütün sistemi uçurması gibi durumlar, sizin de takdir edeceğiniz gibi can sıkıcıdır ve bunun gibi sebeplerden ötürü insanlar sanallaştırmaya ilgi duymaya başladı.

İlk yapmaya başladığımız sanallaştırma çözümleri, bir program (ya da işletim sistemi) ile donanımımızı ve istediğimiz işletim sistemini sanallaştırmasını sağlayarak, o programın (bazı durumlarda işletim sisteminin) içindeki sistemimizin, iç sistemdeki bağımlılıklardan etkilenmeden çalışmasıydı. Takdir edersiniz ki güzel bir çözüm ve her yerde hala karşımıza çıkıyor.

Sorun şu ki işletim sistemleri ağırdır, büyüktür ve bir program için (ne kadar yalıtım o kadar iyi) koskocaman bir işletim sistemini çalıştırmaya gerek olmamalı.

Bunlara karşı ise bize gelen çözümün adı ise Docker. Docker, Docker imajları dediğimiz, mümkün olduğunca hedef program tarafından kullanılmayacak eklerin çıkartıldığı ya da imajımızı kendimiz oluşturuyorsak bütün bağımlılıkları kendimizin kontrol edebildiği imajlar oluşturmamızı sağlayan bir sistemdir. Bu imaj üzerinde çalışırken değişiklik yapamazsınız fakat gerçeleştirdiğiniz işlemler sizin belirttiğiniz sistem bölümüne ya da default konum olan (en azından Linux sistemlerde) /var/lib/docker/volumes/"konteyner-adı" konumuna kaydedilir.

Nasıl Kurulur?


Docker kurulumu için en iyi kaynak Docker'ın resmi kaynağıdır, Ubuntu ve CentOS üzerine kurulum için ileriki zamanlarda güzel bir rehber hazırlayacağım


Bunun yanında yazının devamında kullanacağımız Docker Compose adlı aracı kurmanız tavsiyemdir


Nasıl PostgreSQL Kurulur?​


Bunun için sade bir script kullanacağım. Öncelikle uyarmadan edemiyorum, üretim için uygun bir kod değil bu. Örnek amaçlıdır. İçindeki dataları .env dosyalarında barındırmanız ya da başka şekillerde girilmelerini sağlamak daha güvenilir olacaktır.

Küçük bir uyarı daha olarak bana güvenerek iş yapmayın, junior bile değilim

Öncelikle bir .yml dosyası oluşturuyoruz.
[CODE lang="yaml" title="docker-compose.yml"]services:
db:
image: postgres
volumes:
- db-data:/var/lib/postgresql/data
environment:
- POSTGRES_DB=kargo-db
- POSTGRES_USER=root
- POSTGRES_PASSWORD=password
ports:
- "5432:5432"
restart: always
volumes:
db-data:
[/CODE]

Şimdi her satırı teker teker açıklıyorum

db -> image: yolunda belirttiğimiz postgres yazısı, Docker'ın kendi DBsi içinden PostgreSQL imajını indirmemize yarıyor.

db -> volumes: -> db-data: yolunda belirttiğimiz konum database datasının docker volümünde nerede olacağı, bizde yine üstte bahsettiğim volumes içine gelecek eğer /istenilen/konum:/var/lib/postgresql/data şeklinde yol belirtmezseniz.

db -> enviroment: bu yol bizim enviroment değişkenlerimizi belirtiyor, konteynerımız içindeki PATH'de bunlar bulunacak ve oluşturulacak DB bu datalara göre oluşturulacak.

db -> ports:
portları dışarı açmamıza yarıyor, sanki ana makinede açmışsınız gibi (buradaki portlara göre) localhost:5432 yolundan erişebilmenize yarıyor.
restart: DB çökerse tekrar otomatik başlatmasına yarıyor, isterseniz değiştirebilirsiniz dokümantasyona göre.

volume -> db-data: burası db: altında yaptığımız değişikliklerden sonra, Docker'a konumun orası olarak kullanılacağına dair, üstteki düzenlediğimiz arkadaşımızı işaret ediyor.

Bu dosyayı, kullandığınız shell üzerinden docker-compose -f /dosya/konumu/docker-compose.yml up -d ile çalıştırdıktan sonra oluşturulan konteynerınızı istediğiniz şekilde kullanabilirsiniz.

Okuduğunuz için teşekkür ederim, sorularınızı bekliyorum
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…