Aracılığıyla paylaş


Azure Pipelines ile Azure Uygulaması Hizmetine özel kapsayıcı dağıtma

Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022

Azure Pipelines'ı kullanarak web uygulamanızı Linux'ta bir Azure Uygulaması Service Web App kapsayıcısına derleyebilir, test edebilir ve otomatik olarak dağıtabilirsiniz. Bu makalede, YAML veya Klasik işlem hatlarını kullanarak şunları yapmayı öğreneceksiniz:

  • Azure Container Registry'de bir Docker görüntüsü oluşturun ve yayımlayın.
  • Azure Web App oluşturun.
  • Azure App Service'e bir kapsayıcı dağıtın.
  • Dağıtım yuvalarına dağıtma.

Önkoşullar

ürün Gereksinimler
Azure DevOps - Azure DevOps kuruluşu ve projesi. Ücretsiz bir tane oluşturun.
- İzinler:
    - Projedeki tüm işlem hatlarına erişim vermek için:Proje Yöneticileri grubunun üyesi olmanız gerekir.
    - Hizmet bağlantıları oluşturmak için:hizmet bağlantıları için Yönetici veya Oluşturucu rolüne sahip olmanız gerekir.
- Microsoft tarafından barındırılan ajanlarda pipeline'ları çalıştırma yeteneği. Paralel bir satın alabilir veya ücretsiz katman isteyebilirsiniz.
GitHub (İngilizce) - GitHub hesabı.
Gök mavisi - Bir Azure Container Registry. Henüz bir Azure kapsayıcı kayıt defteriniz yoksa bir Azure kapsayıcı kayıt defteri oluşturun.

Kodu al

GitHub'da aşağıdaki örnek uygulamayı forklayın.

https://github.com/spring-guides/gs-spring-boot-docker.git

Azure Container Registry'de Docker görüntüsü oluşturma ve yayımlama

Bu bölümü başarıyla tamamlamak için bir Azure Container Registry'niz olmalıdır. Ayrıntılar için önkoşullar bölümüne bakın.

  1. Azure DevOps kuruluşunuzda oturum açın ve projenize gidin.

  2. İşlem Hatları'yı ve ardından Yeni İşlem Hattı'yı seçin.

  3. Kaynak kodunuzun konumu sorulduğunda GitHub'ı seçin ve ardından deponuzu seçin.

  4. Docker: Azure Container Registry'ye bir görüntü oluşturma ve gönderme işlem hattı şablonunu seçin.

    Docker işlem hattı şablonunu seçme işleminin ekran görüntüsü.

  5. Azure aboneliğinizi ve ardından Devam'ı seçin.

  6. Açılan menüden Kapsayıcı kayıt defterinizi seçin ve ardından Doğrula ve yapılandır'ı seçin.

    Docker'ı Doğrulama ve Yapılandırma ekranının ekran görüntüsü.

  7. İşlem hattı YAML şablonunu gözden geçirin, ardından Docker görüntüsünü derlemek ve Azure Container Registry'de yayımlamak için Kaydet ve çalıştır'ı seçin.

    trigger:
    - main
    
    resources:
    - repo: self
    
    variables:
        # Container registry service connection established during pipeline creation
        dockerRegistryServiceConnection: '{{ containerRegistryConnection.Id }}'
        imageRepository: 'javascriptdocker'
        containerRegistry: 'sampleappcontainerregistry.azurecr.io'
        dockerfilePath: '$(Build.SourcesDirectory)/app/Dockerfile'
        tag: '$(Build.BuildId)'
    
        # Agent VM image name
        vmImageName: 'ubuntu-latest'
    
    stages:
    - stage: Build
        displayName: Build and push stage
        jobs:
        - job: Build
        displayName: Build
        pool:
            vmImage: $(vmImageName)
        steps:
        - task: Docker@2
            displayName: Build and push an image to container registry
            inputs:
            command: buildAndPush
            repository: $(imageRepository)
            dockerfile: $(dockerfilePath)
            containerRegistry: $(dockerRegistryServiceConnection)
            tags: |
                $(tag)
    
  8. İşlem hattı çalıştırması tamamlandıktan sonra yayımlanan Docker görüntüsünü görüntülemek için Azure portalında kapsayıcı kayıt defterine gidin ve Depolar'ı seçin.

    Azure Container Registry'de yayımlanan Docker görüntüsünün ekran görüntüsü.

  9. Görüntüyü kapsayıcı kayıt defterinden dağıtmak için yönetici kullanıcı hesabını etkinleştirin. Azure portalında kapsayıcı kayıt defterine gidin ve Erişim anahtarları'nı seçin. Ardından Yönetici kullanıcısını etkinleştir'e geçiş düğmesini seçin.

Web Uygulaması Oluşturma

  1. Azure portala gidin.

  2. Kaynak Oluştur>Kapsayıcılar'ı seçin ve ardından Kapsayıcılar için Web Uygulaması'nı seçin.

    Kapsayıcılar kaynağı için web uygulaması oluşturma işleminin ekran görüntüsü.

  3. Yeni web uygulamanız için bir ad girin ve yeni bir kaynak grubu oluşturun. İşletim Sistemi için Linux'ı seçin.

    Web uygulamasını yapılandırma işleminin ekran görüntüsü.

  4. Fiyatlandırma planları bölümünde F1 Ücretsiz planını seçin.

  5. İncele ve oluştur'u seçin. Yapılandırmanızı gözden geçirin ve işiniz bittiğinde Oluştur'u seçin.

Kapsayıcılar için Web Uygulamasına Dağıtma

Bu YAML'de bir Docker görüntüsünü derleyip kapsayıcı kayıt defterine gönderir ve ardından Kapsayıcılar için Azure Web App'e dağıtırsınız. Derleme aşamasında, Docker@2 göreviyle bir Docker görüntüsü derleyip Azure Container Registry'ye gönderirsiniz. AzureWebAppContainer@1 görevi görüntüyü Kapsayıcılar için Web App'e dağıtır.


trigger:
- main

resources:
- repo: self

variables: 
  ## Add this under variables section in the pipeline
  azureSubscription: <Name of the Azure subscription>
  appName: <Name of the Web App>
  containerRegistry: <Name of the Azure container registry>
  dockerRegistryServiceConnection: '4fa4efbc-59af-4c0b-8637-1d5bf7f268fc'
  imageRepository: <Name of image repository>
  dockerfilePath: '$(Build.SourcesDirectory)/Dockerfile'
  tag: '$(Build.BuildId)'

  vmImageName: 'ubuntu-latest'

stages:
- stage: Build
  displayName: Build and push stage
  jobs:
  - job: Build
    displayName: Build
    pool:
      vmImage: $(vmImageName)
    steps:
    - task: Docker@2
      displayName: Build and push an image to container registry
      inputs:
        command: buildAndPush
        repository: $(imageRepository)
        dockerfile: $(dockerfilePath)
        containerRegistry: $(dockerRegistryServiceConnection)
        tags: |
          $(tag)


    ## Add the below snippet at the end of your pipeline
    - task: AzureWebAppContainer@1
      displayName: 'Azure Web App on Container Deploy'
      inputs:
        azureSubscription: $(azureSubscription)
        appName: $(appName)
        containers: $(containerRegistry)/$(imageRepository):$(tag)

Dağıtım yuvasına yerleştirme

Azure Web App kapsayıcısını birden çok yuvaya sahip olacak şekilde yapılandırın. Uygulama yuvaları, uygulamanızı güvenli bir şekilde dağıtmanızı ve müşterilerinize sunmadan önce test etmenizi sağlar. Hazırlama ortamları oluşturma bölümünde daha fazla bilgi edinin.

Aşağıdaki YAML kod parçacığı, bir hazırlık slotuna dağıtımı ve ardından bir üretim slotuna geçişi gösterir.

- task: AzureWebAppContainer@1
  inputs:
    azureSubscription: '<Azure service connection>'
    appName: '<Name of the web app>'
    containers: $(containerRegistry)/$(imageRepository):$(tag)
    deployToSlotOrASE: true
    resourceGroupName: '<Name of the resource group>'
    slotName: staging

- task: AzureAppServiceManage@0
  inputs:
    azureSubscription: '<Azure service connection>'
    WebAppName: '<name of web app>'
    ResourceGroupName: '<name of resource group>'
    SourceSlot: staging
    SwapWithProduction: true

SSS

S: Docker kayıt defteri kimlik bilgilerimi nasıl bulabilirim?

Y: Azure portalına gidin ve Kapsayıcılar için Web Uygulamanızı seçin. Yapılandırma>Uygulama ayarları seçeneğini ve ardından değeri göstermek için seçeneği seçin.

Docker kayıt defteri kimlik bilgilerini bulmayı gösteren Azure portalının ekran görüntüsü.