Aracılığıyla paylaş


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 depoyu çatalla

Tarayıcınızda aşağıdaki örnek depoya göz atın ve onu GitHub hesabınıza fork edin.

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ı'nı seçin.

    • 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, vmImage öğesini ubuntu-latest veya windows-latest olarak ayarladığınızdan 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.

Kendi kendine barındırılan aracıları kullanırken, Docker'ın aracının konağına yüklendiğinden ve Docker motoru/daemoni'nin yükseltilmiş ayrıcalıklarla çalıştığından emin olun.

Görüntüyü oluşturmak için, Docker'ın agent host'unda yüklü olması ve Docker motoru/hizmetinin yönetici ayrıcalıklarıyla çalışan durumda olması gerekmektedir. YAML işlem hattı düzenleyicisini kullanarak işlem hattınızı oluşturmak için aşağıdaki adımları kullanın.

  1. Koleksiyonunuza gidin ve bir proje oluşturun.
  2. Projenizde İşlem Hatları'nı 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ı, Docker özelliğine sahip şirket içinde barındırılan aracınızı içeren havuzun adıyla 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 ajan üzerinde derlenir 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 ön belleğe alınmış Docker görüntüleri kullanılabilir?

Kapsayıcı kayıt defterinden her iş için Docker görüntülerini çekmekten kaçınmak için, yaygın olarak kullanılan bazı görüntüler Microsoft'un barındırdığı aracılarda önceden önbelleğe alınır.

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

Kendi kendine barındırılan bir aracıyı nasıl kullanabilirim?

Docker yüklenmelidir ve aracının ana bilgisayarında altyapı/daemon çalışıyor olmalıdır. 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, GitHub'daki qemu-user-static'e bakınız.

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. Görüntüyü bir kapsayıcı kayıt defterine göndermeyi öğrenmek için aşağıdaki makalelerden birine göz atın.