Docker için yardımcı script - GKMNGRGN
August 05, 2018 3 dakika
Docker’da projenin çalıştırılacağı ortam sayısı arttıkça, konteynerler çoğaldıkça, yapılandırma dosyalarında satır sayısı uzadıkça komutlar da uzamaya, parametreler artmaya başlıyor. Django shell’e nasıl bağlanılıyordu, çeviri dosyalarını nasıl güncelliyorduk, frontend sunucusu hazır mı değil mi nasıl anlıyorduk demek yerine, sık kullanılan komutları basit bir scriptle çalıştırırsak beni rahatlatır diye düşündüm ve internette bununla ilgili bir araştırma yaptım.
Öncelikle bu tip işler için Makefile kullanma önerisi çok hoşuma gitti. Epey basit ve anlaşılır bir sözdizimi var, komut satırında çift tab yapıp autocomplete yapabiliyorsunuz ve bu tip yardımcı özellikler epey verimliliği artırıyor. Zaten amacımız verimliliği artırmak. Ama Windows kullananların Makefile’i ayrıca yüklemesi gerekiyor.
Makefile’i yüklemek (veya yükletmek) bir problem değil; ama yine de alternatiflere bakma gereği duydum1. Docker compose‘da her bir komut için ayrı ayrı servis oluşturma fikri çok mantıklı gelmedi, bir de help çıktısı ile tüm komutları açıklamalarıyla birlikte görmek istiyordum. O nedenle basit bir shell scripting ile zaten bağımlılığımız olan eldeki araçları kullanarak bu işi yapabileceğimizi gördüm.
Komutu parametresiz çalıştırdığımda bana nasıl kullanabileceğimi gösterecek.
Sistemin production mu, yoksa geliştirme ortamı mı olduğunu ben belirleyeceğim.
Komutu çalıştırırken emin olmak için ortamı ve hatırlatmak için asıl komutu gösterecek.
> shell               Open Bash
> start               Create and start containers
> status              List containers
> stop                Stop services
Öntanımlı ortam, DEV:
$ ./do.sh status
Command: docker-compose -f docker-compose.yml -f docker-compose.dev.yml ps
Name                  State      Ports
prj_amqp_1            Up         15671/tcp, 15672/tcp, 25672/tcp, 4369/tcp, 5671/tcp, 5672/tcp
prj_backend_1         Exit 137
prj_db_1              Up         5432/tcp
prj_es_1              Up         9200/tcp, 9300/tcp
prj_frontend_1        Up         0.0.0.0:8080->8080/tcp
STAGING ortamını kullanmak istersek:
$ ENV=STAGING ./do.sh shell
Command: docker-compose -f docker-compose.yml -f docker-compose.staging.yml up -d db frontend backend ...
Windows PowerShell‘de kullanmak için:
> $env:ENV = "PROD";
> bash do.sh status
Command: docker-compose -f docker-compose.yml -f docker-compose.prod.yml ps
Windows’ta Git Bash kullanıyorsanız:
$ ENV=STAGING winpty bash do.sh status
Command: docker-compose -f docker-compose.yml -f docker-compose.staging.yml ps
Yannick PEREIRA-REIS1‘e teşekkürler. Az Mesai slack grubuna da geribildirim için teşekkürler.
Yannick PEREIRA-REIS - Docker with shell script or Makefile [return]