Azure Pipelines ile Azure Uygulaması Hizmetine özel kapsayıcı dağıtma
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
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 Docker görüntüsü oluşturma ve yayımlama
- Azure Web Uygulaması Oluşturma
- Azure Uygulaması Hizmetine kapsayıcı dağıtma
- Dağıtım yuvalarına dağıtma
Önkoşullar
- Etkin aboneliği olan bir Azure hesabı. Ücretsiz hesap oluşturun.
- Bir GitHub hesabı. Henüz yoksa ücretsiz bir GitHub hesabı oluşturun.
- Bir Azure DevOps kuruluşu. Henüz bir kuruluşunuz yoksa bir kuruluş oluşturun.
- An Azure Container Registry. Henüz bir azure kapsayıcı kayıt defteriniz yoksa bir Azure kapsayıcı kayıt defteri oluşturun.
Kodu alma
GitHub'da aşağıdaki örnek uygulamanın çatalını oluşturun.
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.
Azure DevOps kuruluşunuzda oturum açın ve projenize gidin.
İşlem Hatları'yı ve ardından Yeni İşlem Hattı'yı seçin.
Kaynak kodunuzun konumu sorulduğunda GitHub'ı seçin ve ardından deponuzu seçin.
Docker: derleme ve Azure Container Registry işlem hattı şablonuna görüntü gönderme seçeneğini belirleyin.
Azure aboneliğinizi ve ardından Devam'ı seçin.
Açılan menüden Kapsayıcı kayıt defterinizi seçin ve ardından Doğrula ve yapılandır'ı seçin.
İşlem hattı YAML şablonunu gözden geçirin ve ardından Kaydet ve çalıştır'ı seçerek Docker görüntüsünü derleyin ve Azure Container Registry'nizde yayımlayın.
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)
İşlem hattı çalıştırmanız tamamlandıktan sonra yayımlanan Docker görüntüsünü görüntülemek için Azure portalında kapsayıcı kayıt defterinize gidin ve Depolar'ı seçin.
Görüntünüzü kapsayıcı kayıt defterinden dağıtmak için yönetici kullanıcı hesabını etkinleştirmeniz gerekir. Azure portalında kapsayıcı kayıt defterinize gidin ve Erişim anahtarları'nı seçin. Ardından Yönetici kullanıcısını etkinleştir iki durumlu düğmesini seçin.
Web Uygulaması Oluşturma
Azure portala gidin.
Kaynak>Kapsayıcıları oluştur'u ve ardından Kapsayıcılar için Web Uygulaması'nı seçin.
Yeni web uygulamanız için bir ad girin ve yeni bir Kaynak Grubu oluşturun. İşletim Sistemi için Linux'ı seçin.
Fiyatlandırma planları bölümünde F1 Ücretsiz planını seçin.
İ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 App’e 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 dağıtma
Azure Web App kapsayıcısını birden çok yuvaya sahip olacak şekilde yapılandırabilirsiniz. Yuvalar, uygulamanızı güvenli bir şekilde dağıtmanıza ve müşterilerinizin kullanımına sunmadan önce test etmeye olanak sağlar. Daha fazla ayrıntı için bkz . Hazırlama ortamları oluşturma.
Aşağıdaki YAML kod parçacığı, hazırlama yuvasına dağıtmayı ve ardından üretim yuvasına geçmeyi 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>Uygulaması ayarları'nı seçin ve ardından değeri göstermek için tıklayın.