Hızlı Başlangıç: Azure Pipelines kullanarak uygulama dağıtmak için kapsayıcı görüntüsü oluşturma

Azure DevOps Services

Bu hızlı başlangıçta Azure Pipelines kullanarak uygulama dağıtımı için bir kapsayıcı görüntüsü oluşturma işlemi gösterilmektedir. Bu görüntüyü oluşturmak için tek ihtiyacınız olan deponuzda bir Dockerfile dosyasıdır. İşlem hattınızda kullandığınız aracıyı temel alarak Linux veya Windows kapsayıcıları oluşturabilirsiniz.

Önkoşullar

Örnek deponun çatalını oluşturma

Tarayıcınızda aşağıdaki örnek depoya gidin ve Bunu GitHub hesabınıza çatallayın.

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

Linux veya Windows görüntüsü oluşturma

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

  2. projede ilk işlem hattını oluşturuyorsanız İşlem Hatları'na gidin ve Yeni İşlem Hattı veya İşlem Hattı Oluştur'u seçin.

  3. Kaynak kodunuzun konumu olarak GitHub'ı seçin.

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

    • Oturum açmak için GitHub'a yönlendirilirseniz GitHub kimlik bilgilerinizi girin.
    • Azure Pipelines uygulamasını yüklemek için GitHub'a yönlendirilirseniz Onayla ve yükle'yi seçin.
  5. azure-pipelines.yml içeriğini aşağıdaki kodla değiştirin. Linux veya Windows uygulaması dağıtıp dağıtmadığınıza bağlı olarak, sırasıyla veya windows-latestolarak ubuntu-latest ayarlandığından vmImage emin olun.

     trigger:
     - main
    
     pool:
       vmImage: 'ubuntu-latest' 
    
     variables:
       imageName: 'pipelines-javascript-docker'
    
     steps:
     - task: Docker@2
       displayName: Build an image
       inputs:
         repository: $(imageName)
         command: build
         Dockerfile: app/Dockerfile
    
  6. İşiniz bittiğinde Kaydet ve çalıştır'ı seçin.

  7. azure-pipelines.yml dosyasını deponuza eklediğinizde, bir işleme iletisi eklemeniz istenir. Bir ileti girin ve kaydet ve çalıştır'ı seçin.

Şirket içinde barındırılan aracıları kullanırken Docker'ın aracının konağına yüklendiğinden ve Docker altyapısının/daemon'un yükseltilmiş ayrıcalıklarla çalıştığından emin olun.

Görüntüyü oluşturmak için Docker aracının konağına yüklenmelidir ve Docker altyapısı/daemon yükseltilmiş ayrıcalıklarla çalışıyor olmalıdır. YAML işlem hattı düzenleyicisini kullanarak işlem hattınızı oluşturmak için aşağıdaki adımları kullanın.

  1. Koleksiyonunuz gidin ve bir proje oluşturun.
  2. Projenizde İşlem Hatları'yı seçin.
  3. İşlem Hattı Oluştur'u seçin.
  4. Kaynak kodunuzun konumu olarak GitHub Enterprise Server'ı seçin.
  5. Henüz yapmadıysanız Azure Pipelines'ı GitHub Enterprise Server hesabınıza bağlanma yetkisi verin.
    1. GitHub Enterprise Server'a Bağlan'ı seçin.
    2. Hesap ayrıntılarınızı girin ve Doğrula ve kaydet'i seçin.
  6. Deponuzu seçin. Azure Pipelines uygulamasını yüklemek için GitHub'a yönlendirilirseniz Onayla ve yükle'yi seçin.
  7. İşlem hattınızı yapılandırmak için Docker görüntüsü oluştur şablonunu seçin.
  8. YAML işlem hattı düzenleyicisinde YAML dosyasının içeriğini aşağıdaki kodla değiştirin. Havuz adını, şirket içinde barındırılan aracınızı içeren havuzun adıyla Docker özelliğiyle değiştirin.
# Docker
# Build a Docker image
# https://docs.microsoft.com/azure/devops/pipelines/languages/docker

trigger:
- main

pool:
  name: default
  demands: docker

variables:
  imageName: 'pipelines-javascript-docker'

steps:
 - task: Docker@2
   displayName: Build an image
   inputs:
     repository: $(imageName)
     command: build
     Dockerfile: '$(Build.SourcesDirectory)/app/Dockerfile'

  1. Kaydet ve çalıştır'ı seçin.
  2. Kaydet ve çalıştır sayfasında Kaydet ve yeniden çalıştır'ı seçin.

Docker görüntüleri oluşturma hakkında daha fazla bilgi için bu örnek uygulama tarafından kullanılan Docker görevine bakın. Ayrıca bir komut satırı görevi kullanarak Docker komutlarını doğrudan çağırabilirsiniz.

Kapsayıcı görüntüleri aracıda oluşturulur ve depolanır. Görüntünüzü Google Container Registry, Docker Hub veya Azure Container Registry'ye gönderebilirsiniz. Daha fazla bilgi için bkz . Docker Hub'a veya Google Container Registry'ye görüntü gönderme veya Azure Container Registry'ye görüntü gönderme.

Kaynakları temizleme

Bu uygulamayı kullanmaya devam etmek istemiyorsanız işlem hattınızı ve kod deponuzu silin.

SSS

Kapsayıcı görüntüleri oluşturmak için hangi aracıları kullanabilirim?

  • Microsoft tarafından barındırılan Ubuntu aracılarını veya Linux platform tabanlı şirket içi barındırılan aracıları kullanarak Linux kapsayıcı görüntüleri oluşturabilirsiniz.

  • Microsoft tarafından barındırılan Windows aracılarını veya Windows platformu tabanlı şirket içi barındırılan aracıları kullanarak Windows kapsayıcı görüntüleri oluşturabilirsiniz. Microsoft tarafından barındırılan tüm Windows platform tabanlı aracılar, Docker derlemeleri için gereken Moby altyapısı ve istemcisiyle birlikte gönderilir.

  • Şu anda kapsayıcı görüntüleri oluşturmak için Microsoft tarafından barındırılan macOS aracılarını kullanamazsınız çünkü görüntüleri oluşturmak için gereken Moby altyapısı bu aracılara önceden yüklenmemiş.

Daha fazla bilgi için, bkz. Microsoft tarafından barındırılan aracılarla kullanılabilen Windows ve Linux aracısı seçenekleri.

Barındırılan aracılarda hangi önceden oluşturulmuş Docker görüntüleri kullanılabilir?

Kapsayıcı kayıt defterinden her iş için Docker görüntülerini çekerek uzun aralıklarla harcamaktan kaçınmak için, yaygın olarak kullanılan bazı görüntüler Microsoft tarafından barındırılan aracılarda önceden oluşturulur. Önceden oluşturulmuş kullanılabilir görüntülerin listesi için bkz. Azure-pipelines-image-generation deposundaki kullanılabilir VM görüntüleri için Dahil Edilen Yazılım.

Docker derlemelerim için BuildKit değişkenini ayarlamak Nasıl yaparım??

BuildKit performans, depolama yönetimi, özellik işlevselliği ve güvenlikle ilgili derleme geliştirmeleri sunar. BuildKit şu anda Windows konaklarında desteklenmiyor.

BuildKit kullanarak Docker derlemelerini etkinleştirmek için DOCKER_BUILDKIT değişkenini ayarlayın.

trigger:
- main
   
pool:
  vmImage: 'ubuntu-latest'
   

variables:
  imageName: 'pipelines-javascript-docker'
  DOCKER_BUILDKIT: 1
    
steps:
- task: Docker@2
  displayName: Build an image
  inputs:
    repository: $(imageName)
    command: build
    Dockerfile: app/Dockerfile

Şirket içinde barındırılan bir aracıyı nasıl kullanabilirim?

Docker yüklenmelidir ve aracının ana bilgisayarında çalışan altyapı/daemon. Docker aracının ana bilgisayarında yüklü değilse Docker yükleyici görevini işlem hattınıza ekleyebilirsiniz. Docker Görevi'nin önüne Docker Yükleyici Görevini eklemeniz gerekir.

Docker görevini kullanmak yerine betik tabanlı bir Docker derlemesini nasıl oluşturabilirim?

komutunu veya başka bir Docker komutunu kullanabilirsiniz build .

docker build -f Dockerfile -t foobar.azurecr.io/hello:world .

Bu komut, Docker göreviyle oluşturulmuş görüntüye eşdeğer bir görüntü oluşturur. Dahili olarak Docker görevi, bir betik üzerinde Docker ikili dosyasını çağırır ve birkaç farklı avantaj sağlamak için birkaç komutu daha bir araya getirir. Docker görevi hakkında daha fazla bilgi edinin.

Azure Pipelines'da derlemeler sırasında katman önbelleğini yeniden kullanabilir miyim?

Microsoft tarafından barındırılan aracılar kullanıyorsanız her iş, azure-pipelines-image-generation depo şablonlarından oluşturulan görüntüye göre yeni sağlanan bir sanal makineye gönderilir. İş tamamlandıktan sonra bu sanal makineler temizlenir. Bu kısa ömürlü kullanım ömrü, bu sanal makinelerin sonraki işler için yeniden kullanılmasını ve önbelleğe alınmış Docker katmanlarının yeniden kullanılmasını önler. Geçici bir çözüm olarak, iki görüntü üreten ve bunları erken aşamada bir görüntü kayıt defterine gönderen çok aşamalı bir derleme ayarlayabilirsiniz. Ardından Docker'a bu görüntüleri bağımsız değişkeniyle --cache-from önbellek kaynağı olarak kullanmasını söyleyebilirsiniz.

Şirket içinde barındırılan aracılar kullanıyorsanız, geçici bir çözüm olmadan Docker katmanlarını önbelleğe alabilirsiniz çünkü kısa ömürlü kullanım ömrü sorunu bu aracılar için geçerli değildir.

x64 dışındaki mimariler için Linux kapsayıcı görüntülerini nasıl derlerim?

Microsoft tarafından barındırılan Linux aracılarını kullandığınızda, x64 mimarisi için Linux kapsayıcı görüntüleri oluşturursunuz. x86 veya ARM işlemci gibi diğer mimarilere yönelik görüntüler oluşturmak için QEMU gibi bir makine öykünücüsü kullanabilirsiniz.

Aşağıdaki adımlarda QEMU kullanarak ARM işlemci kapsayıcı görüntüsünün nasıl oluşturulacağı gösterilmektedir:

  1. Dockerfile dosyanızı hedef mimariyle eşleşen bir temel görüntüyle yazın:

    FROM arm64v8/alpine:latest
    
  2. Görüntüyü oluşturmadan önce işinizde aşağıdaki betiği çalıştırın:

    # register QEMU binary - this can be done by running the following image
    docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
    # build your image
    

Daha fazla bilgi için bkz . GitHub'da qemu-user-static .

Kapsayıcılı uygulamalar için testleri çalıştırıp test sonuçlarını yayımlamak Nasıl yaparım??

Kapsayıcılı uygulamaları test etme ve sonuçta elde edilen test sonuçlarını yayımlama ile ilgili farklı seçenekler için bkz . Test Sonuçlarını Yayımlama görevi.

Sonraki adımlar

Kapsayıcı görüntünüzü derledikten sonra görüntüyü Azure Container Registry, Docker Hub veya Google Container registry'ye gönderin. Kapsayıcı kayıt defterine görüntü göndermeyi öğrenmek için aşağıdaki makalelerden biriyle devam edin: