Python projesi ve Dokcer swarm

Özgür hocam merhaba, Öncelikle bu kurs için ve bu konuda ufkumun açılmasına vesile oldunuz için teşekkür ederim.

Üzerinde çalıştığım bir proje ile ilgili fikrinize ihtiyacım var. Bu konu ile ilgili detaylı görüşmek isterim, bir fikir oluşması adına projeden bahsetmek istiyorum. Bir web sayfasında pdf indirmesi yapan bir python scripti’m var ve bu script’i docker üzerinden çalıştırmak istiyorum. Single container olarak çalışmasında denemeler yaptım ve bir sonuca ulaştım ancak ben bu işlemleri birden fazla kez çalıştırabilecek şekilde, yani her gelen tetik(script komutu) için ayrı bir container oluşturup komutu çalıştırıp sonrasında işi bitince silinsin şeklinde bir yapı istiyorum kabaca. Aslında single container tarafında bu kısımda da sıkıntı yok. Ben bu yapıyı swarm üzerinde otomatizm olarak yapılandırmak istiyorum (ki nodel’er üzerinde replicas rod-balance işleri de o hale gelsin). Bunu için bir hazırladığım bir imajım ve docker cli da bir komut var fikir vermesi açısından bunu da paylaşmak isterim;

  • docker container run --rm --name 179 webscrp:local python3 /home/apps/webscrp/web_scraping.py -a 179 -p premiumsim

buradaki 179 client id ye denk geliyor, aynı anda birden fazla client’ın bu işlemi gerçekleştirme durumu var (hatta aynı anda 100 veya üzeri client kendi id leri ile aynı script’i başlatabilir). Ben şu andaki durumda her gelen işlem için bu docker komutunu türeterek bu işlemi gerçekleştiriyorum.

:~# docker container run --rm --name 179 webscrp:local python3 /home/apps/webscrp/web_scraping.py -a 179 -p premiumsim

:~# docker container run --rm --name 191 webscrp:local python3 /home/apps/webscrp/web_scraping.py -a 191 -p premiumsim

:~# docker container run --rm --name 186 webscrp:local python3 /home/apps/webscrp/web_scraping.py -a 186 -p dhl

şeklinde…

Bunu swarm üzerinde nasıl kurgulamak daha mantıklı olur o kısımda biraz tıkandım açıkçası.

Bir durum da komut tetiklenince indirilen pdf dosyalarını sunucu da belirli bir yere göndermek yada kopyalamak istiyorum( host:~# /tempstorage/scrap/10/179 ). Bind-monts ile bazı sıkıntılar çıkıyor (container kapanıp kendini silince bir sonraki client işlemi başlattığnda, bir önceki client’in işleminden türetilen klasörü siliniyor) COPY komutunu kullanmak daha mantıklı olabilir mi sizce bu durumda?

Merhaba, bu istediğiniz işlem özel tetikleme ile job tipi container oluşturularak çözülebilir. bunu cluster ortamında yapabilmeniz için bir container orchestration yapısına ihtiyacınız var ve malesef docker swarm bunu sağlamıyor. Fakat Kubernetes’de bu işlemi gerçekleştirebilirsiniz. Jobs | Kubernetes Kubernetes ile bu tarz joblar tanımlayabilir ve tetikletme kısmında Keda kullanabilirsiniz KEDA | Kubernetes Event-driven Autoscaling

Ayrica depolama kısmına da gelirsek Bind Mount bu senaryo için uygun olmayacaktır. Persistent Volume kullanarak her yeni containera aynı volume mount edilerek veri devamlılığı sağlanabilir

1 Beğeni

ilgilendiğiniz için teşekkürler Özgür Hocam. Bir inceleyeceğim.

1 Beğeni