Genel bakış: Azure Container Apps'te Python web uygulaması dağıtma

Bu öğreticide, bir Python web uygulamasını kapsayıcıya alma ve Azure Container Apps'e dağıtma adımları gösterilmektedir. Örnek bir web uygulaması kapsayıcılı hale getirilir ve Docker görüntüsü Azure Container Registry'de depolanır. Azure Container Apps, Container Registry'den Docker görüntüsünü çekecek ve bir kapsayıcı oluşturacak şekilde yapılandırılmıştır. Örnek uygulama, Container Apps ile diğer Azure kaynakları arasındaki iletişimi göstermek için bir PostgreSQL için Azure Veritabanı bağlanır.

Azure'da bulutta yerel ve kapsayıcılı Python web uygulamaları oluşturmak ve dağıtmak için çeşitli seçenekler vardır. Bu öğretici, Azure Container Apps'i kapsar. Container Apps, özellikle kapsayıcılarda dağıtılan birçok mikro hizmeti kapsayan uygulamalar için genel amaçlı kapsayıcılar çalıştırmak için uygundur. Bu öğreticide bir kapsayıcı oluşturacaksınız. Bir Python web uygulamasını Azure Uygulaması Hizmeti'ne kapsayıcı olarak dağıtmak için bkz. App Service'te Kapsayıcılı Python web uygulaması.

Bu öğreticide şunları yapacaksınız:

Bu öğreticinin ardından, Bir Python web uygulamasının Azure'a Sürekli Tümleştirme (CI) ve Sürekli Dağıtım (CD) için ayarlanacaksınız.

Servise genel bakış

Bu öğreticiyi destekleyen hizmet diyagramı, öğreticide yerel ortamınızın, GitHub depolarınızın ve Azure hizmetlerinizin nasıl kullanıldığını gösterir.

A screenshot of the environments and services used in the Tutorial - Deploy a Python App on Azure Container Apps.

Bu öğreticiyi destekleyen ve yukarıdaki diyagramda gösterilen bileşenler şunlardır:

  • Azure Container Apps

    • Azure Container Apps sunucusuz bir platformda mikro hizmetler ve kapsayıcılı uygulamalar çalıştırmanıza olanak tanır. Sunucusuz platform, kapsayıcıları en az yapılandırmayla çalıştırmanın avantajlarından yararlandığınız anlamına gelir. Azure Container Apps ile uygulamalarınız HTTP trafiği, olay odaklı işleme veya CPU veya bellek yükü gibi özelliklere göre dinamik olarak ölçeklendirilebilir.
    • Container Apps, Azure Container Registry'den Docker görüntülerini çeker. Kapsayıcı görüntülerine yapılan değişiklikler, dağıtılan kapsayıcıda bir güncelleştirme tetikler. Ayrıca GitHub Actions'ı güncelleştirmeleri tetikleye yapılandırabilirsiniz.
  • Azure Container Registry

    • Azure Container Registry, Azure'da Docker görüntüleriyle çalışmanızı sağlar. Container Registry, Azure'daki dağıtımlarınıza yakın olduğundan erişim üzerinde denetim sahibi olursunuz ve Docker görüntülerine erişimi denetlemek için Microsoft Entra gruplarınızı ve izinlerinizi kullanabilirsiniz.
    • Bu öğreticide kayıt defteri kaynağı Azure Container Registry'dir, ancak küçük değişikliklerle Docker Hub'ı veya özel bir kayıt defterini de kullanabilirsiniz.
  • PostgreSQL için Azure Veritabanı

    • Örnek kod, uygulama verilerini bir PostgreSQL veritabanında depolar.
    • Kapsayıcı uygulaması, açıkça yapılandırılan ortam değişkenleri aracılığıyla veya Azure Service Bağlan or ile PostgreSQL'e bağlanır.
  • GitHub

    • Bu öğreticinin örnek kodu, çatal oluşturup yerel olarak kopyaladığınız bir GitHub deposunda yer alır. GitHub Actions ile CI/CD iş akışı ayarlamak için bir GitHub hesabınız olmalıdır.
    • Bu öğreticiyi GitHub hesabı olmadan, yerel olarak veya Azure Cloud Shell'de çalışarak örnek kod deposundan kapsayıcı görüntüsünü oluşturmaya devam edebilirsiniz.

Düzeltmeler ve CI/CD

Kod değişiklikleri yapmak ve bunları bir kapsayıcıya göndermek için, yaptığınız değişiklikle yeni bir Docker görüntüsü oluşturursunuz. Ardından görüntüyü Container Registry'ye gönderir ve kapsayıcı uygulamasının yeni bir düzeltmesini oluşturursunuz.

Bu işlemi otomatikleştirmek için öğreticideki isteğe bağlı bir adım, GitHub Actions ile sürekli tümleştirme ve sürekli teslim (CI/CD) işlem hattı oluşturmayı gösterir. İşlem hattı, GitHub deponuza her yeni işleme gönderildiğinde kodunuzu otomatik olarak derleyip Kapsayıcı Uygulamasına dağıtır.

Kimlik doğrulaması ve güvenlik

Bu öğreticide doğrudan Azure'da bir Docker kapsayıcı görüntüsü oluşturacak ve bunu Azure Container Apps'e dağıtacaksınız. Container Apps, Azure Sanal Ağ s (VNet) tarafından desteklenen bir ortam bağlamında çalışır. Sanal ağlar, Azure'daki özel ağınız için temel bir yapı taşıdır. Container Apps, girişi etkinleştirerek kapsayıcı uygulamanızı genel web'de kullanıma sunmanızı sağlar.

Sürekli tümleştirmeyi ve sürekli teslimi (CI/CD) ayarlamak için Azure Container Apps'i GitHub hesabınız için OAuth Uygulaması olarak yetkilendirileceksiniz. OAuth Uygulaması olarak, Container Apps deponuza bir GitHub Actions iş akışı dosyası yazar ve bunları güncelleştirmek için Azure kaynakları ve işleri hakkında bilgi sağlar. İş akışı, Container Apps için rol tabanlı erişim ve Azure Container Registry için kullanıcı adı ve parola ile bir Microsoft Entra hizmet sorumlusunun (veya mevcut hizmet sorumlusunun) kimlik bilgilerini kullanarak Azure kaynaklarını güncelleştirir. Kimlik bilgileri GitHub deponuzda güvenli bir şekilde depolanır.

Son olarak, öğretici örneği web uygulaması verileri bir PostgreSQL veritabanında depolar. Örnek kod bir bağlantı dizesi aracılığıyla PostgreSQL'e bağlanır. Kapsayıcı Uygulamasının yapılandırması sırasında öğretici, bağlantı bilgilerini içeren ortam değişkenlerini ayarlama konusunda size yol gösterir. Aynı şeyi gerçekleştirmek için bir Azure Service Bağlan veya da kullanabilirsiniz.

Önkoşullar

Bu öğreticiyi tamamlamak için şunları yapmanız gerekir:

Örnek uygulama

Python örnek uygulaması, PostgreSQL'de restoran ve gözden geçirme verilerini kaydeden bir restoran gözden geçirme uygulamasıdır. Öğreticinin sonunda, Azure Container Apps'te dağıtılan ve çalıştırılan ve aşağıdaki ekran görüntüsüne benzeyen bir restoran gözden geçirme uygulamasına sahip olacaksınız.

A screenshot of the sample app created from the Python containerized web app used in the Tutorial - Containerized Python App on Azure.

Sonraki adım