Menyebarkan kontainer kustom ke Azure App Service dengan Azure Pipelines
Layanan Azure DevOps | Azure DevOps Server 2022 - Azure DevOps Server 2019
Dengan menggunakan Azure Pipelines, Anda dapat membangun, menguji, dan secara otomatis menyebarkan aplikasi web Anda ke kontainer Azure App Service Web App di Linux. Dalam artikel ini, Anda akan mempelajari cara menggunakan alur YAML atau Klasik untuk:
- Membuat dan menerbitkan gambar Docker ke Azure Container Registry
- Membuat Azure Web App
- Menyebarkan kontainer ke Azure App Service
- Menyebarkan ke slot penyebaran
Prasyarat
- Akun Azure dengan langganan aktif. Buat akun secara gratis.
- Akun GitHub. Buat akun GitHub gratis jika Anda belum memilikinya.
- Organisasi Azure DevOps. Buat organisasi, jika Anda belum memilikinya.
- An Azure Container Registry. Buat registri kontainer Azure jika Anda belum memilikinya.
Mendapatkan kode
Fork aplikasi sampel berikut di GitHub.
https://github.com/spring-guides/gs-spring-boot-docker.git
Membuat dan menerbitkan gambar Docker ke Azure Container Registry
Agar bagian ini berhasil diselesaikan, Anda harus memiliki Azure Container Registry. Lihat bagian prasyarat untuk detailnya.
Masuk ke organisasi Azure DevOps Anda dan arahkan ke proyek Anda.
Pilih Alur, lalu Alur Baru.
Pilih GitHub saat dimintai lokasi kode sumber Anda, lalu pilih repositori Anda.
Pilih Docker: buat dan dorong gambar ke templat alur Azure Container Registry.
Pilih langganan Azure Anda, lalu pilih Lanjutkan.
Pilih registri Kontainer Anda dari menu drop-down, lalu pilih Validasi dan konfigurasikan.
Tinjau templat YAML alur, lalu pilih Simpan dan jalankan untuk membangun dan menerbitkan gambar Docker ke Azure Container Registry Anda.
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)
Untuk melihat gambar Docker yang diterbitkan setelah eksekusi alur Anda selesai, navigasikan ke registri kontainer Anda di portal Azure, lalu pilih Repositori.
Untuk menyebarkan gambar Anda dari registri kontainer, Anda harus mengaktifkan akun pengguna admin. Navigasikan ke registri kontainer Anda di portal Azure, dan pilih Kunci akses. Selanjutnya, pilih tombol alih untuk Mengaktifkan pengguna Admin.
Membuat sebuah Aplikasi Web
Navigasi ke portal Azure.
Pilih Buat Kontainer sumber daya>, lalu pilih Aplikasi Web untuk Kontainer.
Masukkan nama untuk aplikasi web baru Anda, dan buat Grup Sumber Daya baru. Pilih Linux untuk Sistem Operasi.
Di bagian Paket harga, pilih paket F1 Gratis.
Pilih Tinjau dan buat. Tinjau konfigurasi Anda, dan pilih Buat setelah selesai.
Menyebarkan ke Aplikasi Web untuk Kontainer
Dalam YAML ini, Anda membuat dan mendorong gambar Docker ke registri kontainer lalu menyebarkannya ke Azure Web App for Containers. Pada tahap Build, Anda membuat dan mendorong gambar Docker ke Azure Container Registry dengan tugas Docker@2. Tugas AzureWebAppContainer@1 menyebarkan gambar ke Aplikasi Web untuk Kontainer.
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)
Menyebarkan ke slot penyebaran
Anda dapat mengonfigurasi kontainer Azure Web App untuk memiliki beberapa slot. Slot memungkinkan Anda menyebarkan aplikasi dengan aman dan mengujinya sebelum menyediakannya kepada pelanggan Anda. Lihat Membuat lingkungan penahapan untuk detail selengkapnya.
Cuplikan YAML berikut menunjukkan cara menyebarkan ke slot pentahapan, lalu bertukar ke slot produksi:
- 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
FAQ
T: Bagaimana cara menemukan kredensial registri Docker saya?
A: Navigasi ke portal Azure, lalu pilih Aplikasi Web Anda untuk Kontainer. Pilih Pengaturan Aplikasi Konfigurasi>lalu klik untuk menampilkan nilai.