bu yazımda sizlere docker üzerinde postgresql'i ayağa kaldırmayı ve docker üzerinde çalışan DB'in verilerini kendi bilgisayarınıza kaydetmeyi paylaşacağım.
ilk olarak official postgres image'ını dockerhub tan çekip postgres1 adında bir container oluşturacağız. postgres1'i container olarak çalıştırıp üzerinde çeşitli değişiklikler yaptıktan sonra container'a ait volume dosyalarını alıp container'ı sileceğiz.
Daha sonra yeniden postgres image'ından postgres2 adında bir container oluşturacağız. 2. container'ı oluştururken bir önceki container dan aldığımız volume dosyasını kullanacağız. Bu sayede eski kayıtların yeni container da başarılı bir şekilde erişilebilir olduğunu göreceğiz.
Aşağıdaki işlemleri terminal üzerinde yaparak adımları ve sonuçlarını gözlemleyebilirsiniz.
Docker hub üzerinden postgres image'ını çekerek postgres1 adında bir container oluşturun.
-v: parametresi ile oluturacağınız volume dosyasının adını ve adresini belirtin
postgres1'in loglarına bakarak container'ın son durumu hakkında bilgiler edinebilirsiniz
oluşturduğunuz container'ı çalıştırın
-it : interactive terminal(çalıştırdığınız container'ın içinde sh komutlarını çalıştırmak için)
mydb adında bir veri tabanı oluşturun
Bir postgres CLI(Command Line Interface) aracı olan psql ile oluşturduğunuz veritabanına bağlanın
bağlantı işleminden sonra list database anlamındaki \l komutunu çalıştırın
Veritabanı versiyonunu görmek için aşağıdaki komutu çalıştırabilirsiniz
mydb içerisinde id ve name sütunları olan people adında bir tablo oluşturun
$ CREATE TABLE people (id int, name varchar(80));
|
Oluşturduğunuz tabloya name:mark ve id:1 olacak şekilde bir kayıt girin(insert).
Aşağıdaki select cümlesini çalıştırarak insert ettiğiniz kaydı görebilirsiniz.
\q komutunu çalıştırarak psql tool'undan çıkış yapın
exit komutuyla container dan da çıkış yapın
container'ı restart edin
container'ı kapatıp tekrar ayağa kaldırdığımızda veriler kaybolmayacaktır.
volume inspect komutunu çalıştırarak oluşturduğunuz volume dosyasının bilgilerine erişilebilirsiniz
çıktı:
[
{ "CreatedAt": "2020-02-07T16:03:34+03:00", "Driver": "local", "Labels": null, "Mountpoint": "/var/lib/docker/volumes/postgres-data/_data", "Name": "postgres-data", "Options": null, "Scope": "local" } |
Docker'ı host ettiğiniz(kişisel bilgisayarınız) makinenin terminalinden _data dizininin içeriğine ls komutuyla bakabilirsiniz
$ ls /var/lib/docker/volumes/postgres-data/_data/
|
Bilgisayarınızda oluşturduğunuz postgres1 adlı container'ı silin
bu durumda veriler kişisel bilgisayarınızda kalacaktır. Herhangi bir veri kaybı olmayacaktır.
Elinizde bulunan volume verisini attach ederek postgres2 adında bir container oluşturun.
oluşturduğunuz postgres2 adlı container'ı çalıştırıp ssh üzerinden bağlanın
psql aracı ile tekrar veritabanına bağlanın
Aşağıdaki select sorgusunu çalıştırdığınızda Herhangi bir veri kaybı olmadığını görebilirsiniz.
kaynak:https://markheath.net/post/exploring-postgresql-with-docker
Hiç yorum yok:
Yorum Gönder