Bu modülde tek parça bir node.js uygulamanız için container görüntüsü oluşturacaksınız ve bunu Amazon Elastic Container Registry’e göndereceksiniz. Oluşturmaya Başlayın

amazon ecr’ye dağıtım

Container’lar bir uygulamanın kodunu, yapılandırmalarını ve bağımlılıklarını kolayca çevresel tutarlılık, operasyonel verimlilik, geliştirici verimliliği ve sürüm kontrolü sağlayan kullanımı kolay yapı taşlarına paketlemenizi sağlar. Container’lar dağıtım ortamından bağımsız olarak uygulamaların hızla, güvenilir ve devamlı olarak dağıtılmasının sağlanmasına yardım eder.

mimari genel bakış

Hız
Yeni sürüm bir kodla bir container başlatmak önemli ek dağıtım yükü olmadan gerçekleştirilebilir. Operasyonel hız iyileştirilir çünkü bir geliştiricinin yerel makinesindeki container’a yerleşik kod yalnızca container’ı taşıyarak kolayca bir test sunucusuna taşınabilir. Oluşturma süresinde, bu container uygulama yığınının çalıştırılması için gerekli diğer container’lara bağlanabilir.

Bağımlılık Kontrolü ve Geliştirilmiş İşlem Hattı
Docker container görüntüsü, bir uygulamanın kodunun ve bağımlılıklarının belirli bir noktada yakalamasıdır. Bu, bir mühendislik organizasyonunun uygulama yaşam döngüsü için standart bir işlem hattı oluşturmasını sağlar. Örneğin:

  1. Geliştiriciler yerel bir şekilde container oluşturur ve çalıştırır.
  2. Sürekli entegrasyon sunucusu aynı container’ı çalıştırır ve beklentileri karşıladığından emin olmak için container’a entegrasyon testleri yapar.
  3. Aynı container, çalışma zamanı davranışının yük testleri veya manuel QA kullanılarak kontrol edilebildiği bir hazırlama ortamına gönderilir.
  4. Aynı container üretime gönderilir.

İşlem hattı, aynı container’i entegrasyon ve dağıtımın tüm aşamalarında oluşturabilme, test edebilme, gönderebilme ve çalıştırabilme özelliğiyle yüksek kaliteli, güvenilir bir uygulama sunmayı oldukça kolaylaştırır.

Yoğunluk ve Kaynak Verimliliği
Container’lar birden çok heterojen sürecin tek bir sistemde çalışmasını sağlayarak gelişmiş kaynak verimliliğini kolaylaştırır. Kaynak verimliliği container’ların kullandığı izolasyon ve ayırma tekniklerinin doğal bir sonucudur. Container’lar bir konak bilgisayarın CPU ve belleğinin belirli miktarlarını tüketmekle sınırlandırılabilir. Bir container’a hangi kaynakların ihtiyaç duyduğunu ve temel konak sunucusundan hangi kaynakların kullanılabilir olduğunu anlayarak daha küçük ana bilgisayarlarla kullandığınız bilgi işlem kaynaklarını doğru boyutlandırabilir veya tek bir büyük konak bilgisayarda çalışan işlemlerin yoğunluğunu arttırabilir, erişilebilirliği arttırabilir ve kaynak tüketimini optimize edebilirsiniz.

Esneklik
Docker container’larının esnekliği taşınabilir olmalarına, dağıtım kolaylıklarına ve küçük boyutlarına dayanmaktadır. Bir VM üzerinde gereken kurulum ve yapılandırmanın aksine, container’ların içindeki paketleme hizmetleri konaklar arasında kolayca taşınmalarını, diğer bitişik hizmetlerin başarısızlığından izole edilmelerini ve konak sistemdeki hatalı yamalar veya yazılım yükseltmelerinden korunmalarını sağlar. 

Tamamlama Süresi:20 dakika

Kullanılan Hizmetler:


Bu öğreticinin ilk bölümünde tek parçalı node.js uygulamanız için Docker container görüntüsü oluşturacak ve bunu Amazon Elastic Container Registry’e (Amazon ECR) göndereceksiniz. Bölümü genişletmek için her adımın numarasını seçin.

  • 1. Adım. Kurulumu Alın

    Sonraki birkaç adımda kodu container’lara dağıtmak için Docker, Github, Amazon Elastic Container Service (Amazon ECS), ve Amazon ECR kullanacaksınız. Bu adımları tamamlamak için aşağıdaki araçlara sahip olduğunuzdan emin olun.

    1. Bir AWS hesabı alın: AWS'de bir hesabınız yoksa, buradan kaydolabilirsiniz. Bu öğreticideki tüm alıştırmalar AWS Ücretsiz Kullanım kapsamında olacak şekilde tasarlanmıştır.
      ⚐ Not: Kullanacağınız hizmetlerin bazıları hesabınızın 12 saatten uzun bir süre etkin olmasını gerektirebilir. Herhangi bir hizmette zorluk yaşıyorsanız ve yeni oluşturulmuş bir hesabınız varsa lütfen birkaç saat bekleyip tekrar deneyin.
    2. Docker’ı Yükleyin: Container’larınızda çalışacak görüntü dosyalarını oluşturmak için Docker'ı kullanacaksınız. Docker açık kaynak bir projedir. Mac veya Windows için indirebilirsiniz.
      Docker yüklendikten sonra terminalde Docker --version girerek çalıştığını doğrulayabilirsiniz. Sürüm numarası örneğin şunu görüntülenmelidir: Docker sürüm 19.03.5, oluşturma 633a0ea.
    3. AWS CLI'yi Yükleyin:
      • Görüntüleri Amazon ECR'sine aktarmak için AWS Komut Satırı Arabirimi’ni (AWS CLI) kullanacaksınız. AWS CLI hakkında bilgi edinebilir ve onu buradan indirebilirsiniz.
      • AWS CLI yüklendikten sonra terminalde aws --version girerek çalıştığını doğrulayabilirsiniz. Sürüm numarası örneğin şunu göstermelidir: aws-cli/1.16.217 Python/2.7.16 Darwin/18.7.0 botocore/1.12.207.
      • AWS CLI yüklüyse en son sürüme güncellendiğinden emin olmak için terminalde aşağıdaki komutu çalıştırın: pip install awscli --upgrade --user
      • Daha önce hiç AWS CLI kullanmadıysanız kimlik bilgilerinizi yapılandırmanız gerekebilir.
    4. Metin düzenleyici alın: Kodlama için zaten bir metin düzenleyiciniz yoksa, yerel ortamınıza bir metin düzenleyicisi yükleyin. Atom, geliştiriciler arasında popüler olan basit, açık kaynak bir GitHub metin editörüdür.
  • 2. Adım. Projeyi İndirin ve Açın

    Kodu GitHub'dan indirin:https://github.com/awslabs/amazon-ecs-nodejs-microservices adresine gidin ve GitHub deposunu yerel ortamınıza indirmek için Klonla veya İndir'i seçin. Depoyu klonlamak için GitHub Masaüstüveya Git'i de kullanabilirsiniz.

    Proje dosyalarını açın: Atom'u başlatın, Proje Klasörü Ekleseçeneğini seçin ve depo amazon-ecs-nodejs-microservices'i kaydettiğiniz klasörü seçin. Bu, kolaylıkla çalışabilmeniz için tüm projeyi Atom'a ekleyecektir.

    Proje klasörünüzde, altyapı ve hizmetler için klasörler görmelisiniz. Altyapının bir sonraki adımda kullanacağınız AWS CloudFormation altyapı yapılandırma kodu vardır. Hizmetler node.js uygulamasını oluşturan kodu içerir.

    Dosyaları gözden geçirmek ve veritabanı db.json, sunucu server.jspackage.json, ve uygulama Dockerfile dâhil uygulamanın farklı yönlerini tanımak üzere birkaç dakikanızı ayırın.

    mikro hizmetler projesi
  • 3. Adım. Depo Tedarik Edin

    Depoyu oluşturun:

    • Amazon ECR konsolu kısmına gidin.
    • Depolar sayfasında, Depo Oluştur seçeneğini seçin.
    • Depo oluştur sayfasında, deponuz için şu adı girin: api.
      ⚐ Not: Etiket değişmezliği seçeneği altında varsayılan ayarları değiştirmeyin.
    • Depo oluştur’u seçin.

    Depo oluşturulduktan sonra depo adresini gösteren bir onay mesajı alırsınız. Depo adresi şu formattadır: [account-ID].dkr.ecr.[region].amazonaws.com/[repo-name]. [account-ID], [region], ve [repo-name] sizin kurulumunuza özgü olacaktır.

    ⚐ Not: Bu öğretici boyunca depo adresine ihtiyacınız olacak.

    oluştur
  • 4. Adım. Docker Görüntüsünü Oluşturun ve Gönderin

    Terminalinize erişin ve şu dizine gidin: ~/amazon-ecs-nodejs-microservices/2-containerized/services/api.

    Docker oturumunu doğrulamak için terminali kullanın:

    1. $(aws ecr get-login --no-include-email --region [your-region]) öğesini çalıştırın. [your-region] öğesini değiştirin, örneğin: $(aws ecr get-login --no-include-email --region us-west-2). Gerekirse, kimlik bilgilerinizi yapılandırın.
      Kimlik doğrulama başarılı olduysa şu onay mesajını alırsınız: Oturum Açma Başarılı.
    2. Görüntüyü oluşturmak için terminalde şu komutu çalıştırın: docker build -t api .
      ⚐ Not: after api’den sonra süreç (.) gereklidir.
    3. Oluşturma tamamlandıktan sonra depoya gönderebilmeniz için görüntüyü etiketleyin: docker etiketi api: latest [account-ID] .dkr.ecr. [Region] .amazonaws.com / api: v1 
      ⚐ Not: [account-ID](hesap-kimliği) ve [region] (bölge) kısımlarının yerine özel bilgilerinizi ekleyin.
      ⚐ Profesyonel ipucu:  :v1 görüntü oluşturma sürümünü temsil eder. Görüntüyü her oluşturduğunuzda bu sürüm numarasını artırmalısınız. Bir komut dosyası kullanıyorsanız görüntüyü etiketlemek için zaman damgası gibi otomatik bir sayı kullanabilirsiniz. Bu, gelecekte bir önceki container görüntüsü oluşturmaya kolayca geri dönmenizi sağlayan en iyi uygulamadır.
    4. Şunu çalıştırarak görüntüyü Amazon ECR'ye gönderin: docker push [account-id].dkr.ecr.[region].amazonaws.com/api:v1
      ⚐ Not: [account-ID] (hesap-kimliği) ve [region] (bölge) kısımlarının yerine özel bilgilerinizi ekleyin.

    Amazon ECR veri deponuza giderseniz v1 etiketli resminizi görmelisiniz.

    Amazon ECR görüntü etiketi