Aracılığıyla paylaş


Docker görüntülerini derleme ve Azure Container Registry'de yayımlama

Azure DevOps Services | Azure DevOps Server 2022

Azure Pipelines'ı kullanarak Docker görüntülerinizi derlemek ve Azure Container Registry'de yayımlamak için bir işlem hattı iş akışı ayarlayabilirsiniz. Bu makalede şunları nasıl yapacağınızı öğreneceksiniz:

  • Azure Container Registry oluşturma
  • Azure VM'de şirket içinde barındırılan aracı ayarlama
  • Yönetilen hizmet kimliğini ayarlama
  • Docker Kayıt Defteri hizmet bağlantısı oluşturma
  • Görüntünüzü derleme ve Azure Container Registry'de yayımlama

Önkoşullar

Kodu alma

Bu öğreticiyle birlikte izleyebileceğiniz örnek uygulamayı çatal oluşturun veya kopyalayın.

https://github.com/MicrosoftDocs/pipelines-javascript-docker

Azure Container Registry oluşturma

  1. Azure portala gidin.

  2. Sol gezinti panelinden Kaynak oluştur'u ve ardından Kapsayıcılar'ı ve ardından Container Registry'yi seçin.

  3. Aboneliğinizi seçin ve ardından Kaynak grubunuzu seçin veya yeni bir tane oluşturun.

  4. Kapsayıcı kayıt defteriniz için bir Kayıt Defteri adı girin. Kayıt defteri adı Azure içinde benzersiz olmalı ve en az 5 karakter içermelidir.

  5. Tercih ettiğiniz Konum ve SKU'yu ve ardından Gözden geçir ve oluştur'u seçin.

  6. Ayarlarınızı gözden geçirin ve işiniz bittiğinde Oluştur'u seçin.

Şirket içinde barındırılan aracı VM'leri ayarlama

Docker görüntülerini Azure Container Registry'de yayımlamak için Azure Pipelines ile Yönetilen Hizmet Kimliği'ni kullanmak için azure vm'sinde kendi şirket içinde barındırılan aracımızı ayarlamamız gerekir.

VM oluşturma

  1. Azure portala gidin.

  2. Sol gezinti panelinden Kaynak oluştur'u ve ardından Sanal makine ->Oluştur'u seçin.

  3. Aboneliğinizi seçin ve ardından kapsayıcı kayıt defterinizi oluşturmak için kullandığınız Kaynak grubunu seçin.

  4. Sanal makinenize bir ad verin ve bir Görüntü seçin.

  5. Kullanıcı Adınızı ve Parolanızı girin ve gözden geçir ve oluştur'u seçin.

  6. Ayarlarınızı gözden geçirin ve işiniz bittiğinde Oluştur'u seçin.

  7. Dağıtımınız tamamlandığında Kaynağa git’i seçin.

Aracı havuzu oluşturma

  1. Azure DevOps projenizden dişli simgesini dişli simgesi seçerek Proje ayarlarınıza gidin.

  2. Aracı havuzları'nın ardından Havuz ekle'yi seçin.

  3. Yeni'yi seçin ve havuz türü açılan menüsünden Şirket içinde barındırılan'ı seçin.

  4. Havuzunuza bir ad verin ve ardından Tüm işlem hatlarına erişim izni ver onay kutusunu işaretleyin.

  5. İşiniz bittiğinde Oluştur'u seçin.

  6. Şimdi yeni oluşturduğunuz havuzu seçin ve ardından Yeni aracı'yı seçin.

  7. Daha önce oluşturduğunuz VM'de aracınızı ayarlamak için bu penceredeki yönergeleri kullanacağız. İndir bağlantısını panonuza kopyalamak için Kopyala düğmesini seçin.

    Aracı ayarlamayı gösteren ekran görüntüsü.

Kişisel erişim belirteci oluşturma

  1. Azure DevOps projenizden Kullanıcı Ayarları'nı ve ardından Kişisel Erişim Belirteçleri'ni seçin.

  2. Yeni bir Kişisel Erişim Belirteci oluşturmak için Yeni Belirteç'i seçin.

  3. PAT'niz için bir ad girin ve bir son kullanma tarihi seçin.

  4. Kapsamlar'da Özel tanımlı'yı ve ardından Tüm kapsamları göster'i seçin.

  5. Aracı Havuzları ->Okuma ve yönetme ve Dağıtım Grupları ->Okuma ve yönetme'yi seçin.

  6. İşiniz bittiğinde Oluştur'u seçin ve PAT'nizi güvenli bir konuma kaydedin.

Şirket içinde barındırılan aracı ayarlama

  1. Azure portalında VM'nize bağlanın.

  2. Yükseltilmiş bir PowerShell komut isteminde aracıyı indirmek için aşağıdaki komutu çalıştırın.

    Invoke-WebRequest -URI <YOUR_AGENT_DOWNLOAD_LINK> -UseBasicParsing  -OutFile <FILE_PATH> 
    ##Example: Invoke-WebRequest -URI https://vstsagentpackage.azureedge.net/agent/2.213.2/vsts-agent-win-x64-2.213.2.zip -OutFile C:\vsts-agent-win-x64-2.213.2.zip
    
  3. Aracınızı ayıklamak ve oluşturmak için aşağıdaki komutu çalıştırın.

    mkdir agent ; cd agent
    Add-Type -AssemblyName System.IO.Compression.FileSystem ; [System.IO.Compression.ZipFile]::ExtractToDirectory("<FILE_PATH>", "$PWD")
    
  4. Aracınızı yapılandırmaya başlamak için aşağıdaki komutu çalıştırın.

    .\config.cmd
    
  5. Giriş istendiğinde sunucu URL'nizi girin. Örnek: https://dev.azure.com/fabrikamFiber

  6. PAT kimlik doğrulamasını seçmek için kimlik doğrulama türü istendiğinde Enter tuşuna basın.

  7. Daha önce oluşturduğunuz kişisel erişim belirtecinizi yapıştırın ve enter tuşuna basın.

  8. Aracı havuzunuzun adını girin ve ardından aracı adınızı girin.

  9. İş klasörü için varsayılan değeri bırakın ve aracınızı hizmet olarak çalıştırmak istiyorsanız Y girin.

    Azure VM'de aracı ayarlamayı gösteren ekran görüntüsü.

  10. Aracı işleri dinlemeye başlamaya hazır olduğuna göre docker'ı sanal makinemize yükleyelim. Docker'ı indirmek için aşağıdaki komutu çalıştırın.

    Invoke-WebRequest -URI https://desktop.docker.com/win/main/amd64/Docker%20Desktop%20Installer.exe -OutFile <DOWNLOAD_PATH>
    
  11. İndirme yolunuz gidin ve ardından Docker'ı yüklemek ve başlatmak için aşağıdaki komutu çalıştırın.

    Start-Process 'Docker%20Desktop%20Installer.exe' -Wait install
    
  12. Şimdi aracı klasörünüze dönün ve aracıyı Azure VM'nizde çalıştırmak için cmd dosyasını çalıştırın.

    .\run.cmd
    
  13. Aracınız artık Azure DevOps portalındaki Aracı havuzu ->Agents içinde listelenmelidir.

    Aracılar sekmesinde bulunan aracıyı gösteren ekran görüntüsü.

Yönetilen kimliği ayarlama

  1. Azure portalında, daha önce oluşturduğunuz VM'ye gidin.

  2. Sol gezinti panelinden Kimlik'i seçin ve ardından Sistem tarafından atanan kimliği etkinleştirin.

  3. İşiniz bittiğinde Kaydet'i seçin ve seçiminizi onaylayın.

    Sistem tarafından atanan kimliği etkinleştirmeyi gösteren ekran görüntüsü.

  4. Azure rol atamaları'yı ve ardından Rol ataması ekle'yi seçin.

  5. Kapsam açılan menüsünden Kaynak grubu'na tıklayın.

  6. Aboneliğinizi ve Kaynak grubunuzu seçin ve ardından AcrPush rolünü seçin.

  7. AcrPull rolünü eklemek için 5 . 6. adımları yineleyin.

    Acrpull ve gönderme rollerinin nasıl ayarlandığını gösteren ekran görüntüsü.

Docker kayıt defteri hizmeti bağlantısı oluşturma

  1. Azure DevOps projenizden dişli simgesini dişli simgesi seçerek Proje ayarlarınıza gidin.

  2. Sol bölmeden Hizmet bağlantıları'nı seçin.

  3. Yeni hizmet bağlantısı'nı ve ardından Docker Kayıt Defteri'ni ve ardından İleri'yi seçin.

  4. Azure Container Registry'yi ve ardından Kimlik Doğrulama Türünüz olarak Yönetilen Hizmet Kimliği'ni seçin.

  5. Abonelik Kimliği Abonelik adınızı ve Azure kapsayıcı kayıt defteri oturum açma sunucunuzu girin. Önceki adımda oluşturduğunuz VM'nizin sistem tarafından atanan Kiracı Kimliğini Kiracı Kimliği metin alanına yapıştırın.

  6. Hizmet bağlantınız için bir ad girin ve ardından Tüm işlem hatlarına erişim izni ver onay kutusunu işaretleyin. Bu seçeneği seçmek için hizmet bağlantısı Yönetici rolü gerekir.

  7. İşiniz bittiğinde Kaydet'i seçin.

    Docker kayıt defteri hizmeti bağlantısı MSI'sini ayarlamayı gösteren ekran görüntüsü.

Azure Container Registry'yi derleme ve yayımlama

  1. Azure DevOps projenizden İşlem Hatları'nın ardından İşlem Hattı Oluştur'u seçin.

  2. Kaynak kodunuzu (Azure Repos, GitHub vb.) barındıran hizmeti seçin.

  3. Deponuzu seçin ve ardından Başlangıç işlem hattı'na tıklayın.

  4. Varsayılan yaml işlem hattını silin ve aşağıdaki kod parçacığını kullanın:

    trigger:
    - main
    
    variables:
      dockerRegistryServiceConnection: '<SERVICE_CONNECTION_NAME>'
      imageRepository: '<IMAGE_NAME>'
      dockerfilePath: '$(Build.SourcesDirectory)/app/Dockerfile'
      tag: '$(Build.BuildId)'
    
    stages:
    - stage: Build
      displayName: Build and publish stage
      jobs:
      - job: Build
        displayName: Build job
        pool:
          name: '<YOUR_AGENT_POOL_NAME>'
        steps:
        - task: DockerInstaller@0
          inputs:
            dockerVersion: '17.09.0-ce'
    
        - task: Docker@2
          displayName: Build and publish image to Azure Container Registry
          inputs:
            command: buildAndPush
            containerRegistry: $(dockerRegistryServiceConnection)
            repository: $(imageRepository)
            dockerfile: $(dockerfilePath)
            tags: |
              $(tag)
    
  5. İşlem hattı çalıştırması tamamlandıktan sonra Azure'da görüntünüzü doğrulayabilirsiniz. Azure portalında Azure Container Registry'nize gidin ve Depolar'ı seçin.

    Azure portalındaki görüntüyü gösteren ekran görüntüsü.

Kaynakları temizleme

Bu uygulamayı kullanmaya devam etmek istemiyorsanız, devam eden ücretlerden kaçınmak için kaynak grubunu silin.

az group delete --name myapp-rg