Azure'a Çalışan Hizmeti dağıtma

Bu makalede, .NET Çalışan Hizmeti'nin Azure'a nasıl dağıtılacağı hakkında bilgi edineceksiniz. Çalışanınız Azure Container Registry'den (ACR) Azure Container Instance (ACI) olarak çalıştığından, bulutta mikro hizmet olarak görev yapabilir. Uzun süre çalışan hizmetler için birçok kullanım örneği vardır ve bu nedenle Çalışan Hizmeti vardır.

Bu öğreticide aşağıdakilerin nasıl yapılacağını öğreneceksiniz:

  • Çalışan hizmeti oluşturma.
  • Kapsayıcı kayıt defteri kaynağı oluşturun.
  • Kapsayıcı kayıt defterine görüntü gönderme.
  • Kapsayıcı örneği olarak dağıtın.
  • Çalışan hizmeti işlevselliğini doğrulayın.

Bahşiş

".NET'te Çalışanlar" örnek kaynak kodunun tümü, indirilebilmeniz için Samples Browser'da bulunur. Daha fazla bilgi için bkz . Kod örneklerine göz atma: .NET'te çalışanlar.

Önkoşullar

Yeni proje oluşturma

Visual Studio ile yeni bir Çalışan Hizmeti projesi oluşturmak için Dosya>Yeni>Proje...'i seçin.Yeni proje oluştur iletişim kutusunda "Çalışan Hizmeti" araması yapın ve Çalışan Hizmeti şablonu'na tıklayın. İstediğiniz proje adını girin, uygun bir konum seçin ve İleri'yi seçin. Ek bilgiler sayfasında, Hedef Çerçeve için öğesini seçin .NET 5.0ve Docker desteğini etkinleştirmek için Docker'ı Etkinleştir seçeneğini işaretleyin. İstediğiniz Docker işletim sistemini seçin.

Visual Studio Code ile yeni bir Çalışan Hizmeti projesi oluşturmak için tümleşik terminalden .NET CLI komutlarını çalıştırabilirsiniz. Daha fazla bilgi için bkz . Visual Studio Code: Tümleşik Terminal.

Tümleşik terminali açın, komutunu çalıştırın dotnet new ve değerini istediğiniz proje adıyla değiştirin <Project.Name> .

dotnet new worker --name <Project.Name>

.NET CLI yeni çalışan hizmeti projesi komutu hakkında daha fazla bilgi için bkz . dotnet new worker.

.NET CLI ile yeni bir Çalışan Hizmeti projesi oluşturmak için, sık kullandığınız terminali çalışma dizininde açın. dotnet new komutunu çalıştırın ve öğesini istediğiniz proje adıyla değiştirin<Project.Name>.

dotnet new worker --name <Project.Name>

.NET CLI yeni çalışan hizmeti projesi komutu hakkında daha fazla bilgi için bkz . dotnet new worker.

Bağımlı paketleri geri yüklediğinden ve hatasız derlediğinden emin olmak için uygulamayı derleyin.

Uygulamayı Visual Studio'dan derlemek için F6'yı veya Derleme Çözümü Oluştur>menü seçeneğini belirleyin.

Uygulamayı Visual Studio Code'dan oluşturmak için tümleşik terminal penceresini açın ve komutunu çalışma dizininden çalıştırın dotnet build .

dotnet build

.NET CLI derleme komutu hakkında daha fazla bilgi için bkz dotnet build. .

Uygulamayı .NET CLI'dan derlemek için çalışma dizininden komutunu çalıştırın dotnet build .

dotnet build <path/to/project.csproj>

Oluşturacağınız proje dosyasının yolu olan değerinizi <path/to/project.csproj> belirtin. .NET CLI derleme komutu hakkında daha fazla bilgi için bkz dotnet build. .

Docker desteği ekleme

Yeni bir Çalışan projesi oluştururken Docker'ı Etkinleştir onay kutusunu doğru seçtiyseniz Docker görüntüsünü oluşturma adımına atlayın.

Bu seçeneği belirlemediyseniz endişelenmeyin; şimdi de ekleyebilirsiniz. Visual Studio'da, Çözüm Gezgini proje düğümüne sağ tıklayın ve Docker Desteği Ekle'yi>seçin. Bir Hedef işletim sistemi seçmeniz istenir; varsayılan işletim sistemi seçimiyle Tamam'ı seçin.

Docker File Options

Visual Studio Code'da Docker uzantısının ve Azure Hesabı uzantısının yüklü olması gerekir. Komut Paleti'ni açın ve Docker: Docker dosyalarını çalışma alanına ekle seçeneğini belirleyin. Uygulama Platformu Seç'i seçmeniz istenirse .NET: Çekirdek Konsolu'nu seçin. Proje Seç istenirse, oluşturduğunuz Çalışan Hizmeti projesini seçin. İşletim Sistemini Seçin istendiğinde, listelenen ilk işletim sistemini seçin. İsteğe bağlı Docker Compose dosyalarını dahil edip etmeyeceği sorulduğunda Hayır'ı seçin.

Docker desteği bir Dockerfile gerektirir. Bu dosya, .NET Çalışan Hizmetinizi Docker görüntüsü olarak oluşturmaya yönelik kapsamlı yönergeler kümesidir. Dockerfile, dosya uzantısı olmayan bir dosyadır. Aşağıdaki kod örnek bir Dockerfile dosyasıdır ve proje dosyasının kök dizininde bulunmalıdır.

CLI ile Dockerfilesizin için oluşturulmaz . İçeriğini projenin kök dizinindeki Dockerfile adlı yeni bir dosyaya kopyalayın.

FROM mcr.microsoft.com/dotnet/runtime:8.0 AS base
WORKDIR /app

# Creates a non-root user with an explicit UID and adds permission to access the /app folder
# For more info, please refer to https://aka.ms/vscode-docker-dotnet-configure-containers
RUN adduser -u 5678 --disabled-password --gecos "" appuser && chown -R appuser /app
USER appuser

FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /src
COPY ["App.CloudService.csproj", "./"]
RUN dotnet restore "App.CloudService.csproj"
COPY . .
WORKDIR "/src/."
RUN dotnet build "App.CloudService.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "App.CloudService.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "App.CloudService.dll"]

Dekont

Dockerfile'da *App.CloudService'e başvuran çeşitli satırları güncelleştirmeniz gerekir; bunu projenizin adıyla değiştirin.

Resmi .NET görüntüleri hakkında daha fazla bilgi için bkz . Docker Hub: .NET Runtime ve Docker Hub: .NET SDK.

Docker görüntüsü oluşturma

Docker görüntüsünü oluşturmak için Docker Altyapısı'nın çalışıyor olması gerekir.

Önemli

Docker Desktop ve Visual Studio kullanırken, birim paylaşımıyla ilgili hataları önlemek için etkinleştirildiğinden emin olun.

  1. Docker Desktop'taki Ayarlar ekranında Paylaşılan Sürücüler'i seçin.
  2. Proje dosyalarınızı içeren sürücüyü seçin.

Daha fazla bilgi için bkz . Docker ile Visual Studio geliştirme sorunlarını giderme.

Çözüm Gezgini Dockerfile dosyasına sağ tıklayın ve Docker Görüntüsü Oluştur'a tıklayın. Komut ilerleme durumunu docker build bildiren Çıkış penceresi görüntülenir.

Gezgin'de Dockerfile dosyasına sağ tıklayın ve Görüntü Oluştur'a tıklayın. Resmi olarak etiketlemek isteyip istemediğiniz sorulduğunda girinappcloudservice:latest. Docker görevi çıkış terminali görüntülenir ve Docker derleme komutu ilerleme durumunu bildirir.

Dekont

Resmi etiketlemeniz istenmezse , Visual Studio Code'un mevcut bir tasks.json dosyasına bağlı olması mümkündür. Kullanılan etiket istenmeyen bir etiketse, dizideki tasks yapılandırma öğesinin docker-builddockerBuild/tag değerini güncelleştirerek etiketi değiştirebilirsiniz. Aşağıdaki örnek yapılandırma bölümünü göz önünde bulundurun:

{
  "type": "docker-build",
  "label": "docker-build: release",
  "dependsOn": [
    "build"
  ],
  "dockerBuild": {
    "tag": "appcloudservice:latest",
    "dockerfile": "${workspaceFolder}/cloud-service/Dockerfile",
    "context": "${workspaceFolder}",
    "pull": true
  },
  "netCore": {
    "appProject": "${workspaceFolder}/cloud-service/App.CloudService.csproj"
  }
}

Dockerfile'ın kök dizininde bir terminal penceresi açın ve aşağıdaki docker komutunu çalıştırın:

docker build -t appcloudservice:latest -f Dockerfile .

docker build Komut çalışırken Dockerfile içindeki her satırı bir yönerge adımı olarak işler. Bu komut görüntüyü oluşturur ve resme işaret eden appcloudservice adlı yerel bir depo oluşturur.

Bahşiş

Oluşturulan Dockerfile , geliştirme ortamları arasında farklılık gösterir. Örneğin, Visual Studio'dan Docker desteği eklerseniz Dockerfile adımları farklılık gösterdiğinden Docker görüntüsünü Visual Studio Code'dan derlemeye çalışırsanız sorunlarla karşılaşabilirsiniz. Tek bir geliştirme ortamı seçmek ve bu öğretici boyunca kullanmak en iyisidir.

Kapsayıcı kayıt defteri oluşturma

Azure Container Registry (ACR) kaynağı, özel kayıt defterinde kapsayıcı görüntüleri ve yapıtları oluşturmanıza, depolamanıza ve yönetmenize olanak tanır. Kapsayıcı kayıt defteri oluşturmak için Azure portalında yeni bir kaynak oluşturmanız gerekir.

  1. Abonelik'i ve ilgili Kaynak grubunu seçin (veya yeni bir tane oluşturun).
  2. Kayıt defteri adını girin.
  3. Bir Konum seçin.
  4. Uygun bir SKU seçin, örneğin Temel.
  5. Gözden geçir ve oluştur’u seçin.
  6. Doğrulamanın geçtiğini gördükten sonra Oluştur'u seçin.

Önemli

Kapsayıcı örneği oluştururken bu kapsayıcı kayıt defterini kullanmak için Yönetici kullanıcıyı etkinleştirmeniz gerekir. Erişim anahtarları'nı seçin ve Yönetici kullanıcıyı etkinleştirin.

Azure Container Registry (ACR) kaynağı, özel kayıt defterinde kapsayıcı görüntüleri ve yapıtları oluşturmanıza, depolamanıza ve yönetmenize olanak tanır. Dockerfile'ın kök dizininde bir terminal penceresi açın ve aşağıdaki Azure CLI komutunu çalıştırın:

Önemli

Azure CLI'dan Azure kaynaklarıyla etkileşime geçmek için terminal oturumunuz için kimlik doğrulaması yapmanız gerekir. Kimlik doğrulaması yapmak için komutunu az login kullanın:

az login

Oturum açtıktan sonra, birden fazla aboneliğiniz olduğunda ve varsayılan abonelik kümeniz olmadığında aboneliğinizi belirtmek için komutunu kullanın az account set .

az account set --subscription <subscription name or id>

Azure CLI'da oturum açtığınızda oturumunuz uygun şekilde kaynaklarla etkileşimde bulunabilir.

Çalışan hizmetinizi ilişkilendirmek istediğiniz bir kaynak grubunuz yoksa komutunu kullanarak az group create bir kaynak grubu oluşturun:

az group create -n <resource group> -l <location>

<resource group> adını ve değerini belirtin<location>. Kapsayıcı kayıt defteri oluşturmak için komutunu çağırın az acr create .

az acr create -n <registry name> -g <resource group> --sku <sku> --admin-enabled true

Yer tutucuları kendi uygun değerlerinizle değiştirin:

  • <registry name>: kayıt defterinin adı.
  • <resource group>: kullandığınız kaynak grubu adı.
  • <sku>: kabul edilen değerler, Temel, Klasik, Premium veya Standart.

Yukarıdaki komut:

  • Belirtilen kaynak grubunda kayıt defteri adı verilen bir Azure Container Registry oluşturur.
  • Yönetici kullanıcı etkinleştirildi; bu, Azure Container Instances için gereklidir.

Daha fazla bilgi için bkz . Hızlı Başlangıç: Azure kapsayıcı kayıt defteri oluşturma.

Görüntüyü kapsayıcı kayıt defterine gönderme

.NET Docker görüntüsü oluşturulduğunda ve kapsayıcı kayıt defteri kaynağı oluşturulduktan sonra görüntüyü kapsayıcı kayıt defterine gönderebilirsiniz.

Çözüm Gezgini projeye sağ tıklayın ve Yayımla'yı seçin. Yayımla iletişim kutusu görüntülenir. Hedef için Azure'ı ve ardından İleri'yi seçin.

Visual Studio: Publish dialog - select Azure

Belirli Hedef için Azure Container Registry'yi ve ardından İleri'yi seçin.

Visual Studio: Publish dialog - select container registry

Ardından, Container Registry için ACR kaynağını oluşturmak için kullandığınız Abonelik adını seçin. Kapsayıcı kayıt defterleri seçim alanından, oluşturduğunuz kapsayıcı kayıt defterini seçin ve ardından Son'u seçin.

Visual Studio: Publish dialog - select container registry details

Bu, görüntüyü kapsayıcı kayıt defterinde yayımlamak için kullanılabilecek bir yayımlama profili oluşturur. Görüntüyü kapsayıcı kayıt defterine göndermek için Yayımla düğmesini seçin, Çıkış penceresi yayımlama ilerleme durumunu bildirir ve başarıyla tamamlandığında "Başarıyla yayımlandı" iletisini görürsünüz.

Visual Studio Code'daki Etkinlik Çubuğu'ndan Docker'ı seçin. IMAGES ağaç görünümü panelini genişletin, ardından görüntü düğümünü appcloudservice genişletin ve etikete latest sağ tıklayın.

Visual Studio Code: Docker - push image

Tümleşik terminal penceresi, komutun ilerleme durumunu docker push kapsayıcı kayıt defterine bildirir.

Kapsayıcı kayıt defterine görüntü göndermek için önce kayıt defterinde oturum açmanız gerekir:

az acr login -n <registry name>

Komut, az acr login Docker CLI aracılığıyla bir kapsayıcı kayıt defterinde oturum açar. Görüntüyü kapsayıcı kayıt defterine göndermek için az acr build komutunu kapsayıcı kayıt defterinizin adı <registry name>olarak kullanın:

az acr build -r <registry name> -t appcloudservice .

Yukarıdaki komut:

  • Kaynağı bir katran dosyasına paketler.
  • Kapsayıcı kayıt defterine yükler.
  • Kapsayıcı kayıt defteri tar dosyasını açar.
  • docker build Dockerfile'a karşı kapsayıcı kayıt defteri kaynağında komutunu çalıştırır.
  • Görüntüyü kapsayıcı kayıt defterine ekler.

Görüntünün kapsayıcı kayıt defterine başarıyla gönderildiğini doğrulamak için Azure portalına gidin. Kapsayıcı kayıt defteri kaynağını açın, Hizmetler'in altında Depolar'ı seçin. Görüntüyü görmeniz gerekir.

Kapsayıcı örneği olarak dağıtma

Visual Studio Code'da Etkinlik Çubuğu'ndan Docker'ı seçin. REGISTRIES düğümünü genişletin ve Bağlan Kayıt Defteri'ni seçin. İstendiğinde Azure'ı seçin ve gerekirse oturum açın.

Önemli

Visual Studio Code'dan kapsayıcı örneği olarak dağıtma artık Mac'te çalışmıyor. Daha fazla bilgi için bkz . GitHub: Visual Studio Code için Docker Uzantısı Hakkında.

Visual Studio Code - Docker: Connect registry

REGISTRIES düğümünü genişletin, Azure'ı, aboneliğinizi > kapsayıcı kayıt defteri > görüntüsünü seçin ve etikete sağ tıklayın. Görüntüyü Azure Container Instances'a Dağıt'ı seçin.

Visual Studio Code - Docker: Deploy image to Azure Container Instances

Kapsayıcı örneği oluşturmak için önce komutunu kullanarak az container create bir kapsayıcı grubu oluşturun.

az container create -g <resource group> \
  --name <instance name> \
  --image <registry name>.azurecr.io/<image name>:latest \
  --registry-password <password>

Uygun değerleri belirtin:

  • <resource group>: Bu öğreticide kullandığınız kaynak grubu adı.
  • <instance name>: kapsayıcı örneğinin adı.
  • <registry name>: kapsayıcı kayıt defterinin adı.
  • <image name>: görüntünün adı.
  • <password>: kapsayıcı kayıt defterinin parolası; bunu Azure portalından, Container Registry kaynağı >Erişim Anahtarları'ndan alabilirsiniz.

Kapsayıcı örneği oluşturmak için Azure portalında da yeni bir kaynak oluşturmanız gerekir.

  1. Önceki bölümden aynı Aboneliği ve ilgili Kaynak grubunu seçin.
  2. Kapsayıcı adı girin—appcloudservice-container
  3. Önceki Konum seçimine karşılık gelen bir Bölge seçin.
  4. Görüntü kaynağı için Azure Container Registry'yi seçin.
  5. Önceki adımda sağlanan ada göre Kayıt Defteri'ni seçin.
  6. Görüntü ve Görüntü etiketini seçin.
  7. Gözden geçir ve oluştur’u seçin.
  8. Doğrulamanın başarılı olduğunu varsayarak Oluştur'u seçin.

Kaynakların oluşturulması biraz zaman alabilir ve oluşturulduktan sonra Kaynağa git düğmesini seçin.

Daha fazla bilgi için bkz . Hızlı Başlangıç: Azure kapsayıcı örneği oluşturma.

Hizmet işlevselliğini doğrulama

Kapsayıcı örneği oluşturulduktan hemen sonra çalışmaya başlar.

Çalışan hizmetinizin düzgün çalıştığını doğrulamak için kapsayıcı örneği kaynağında Azure portalına gidin ve Kapsayıcılar seçeneğini belirleyin.

Azure portal: Container instance running

Kapsayıcıları ve geçerli Durumlarını görürsünüz. Bu durumda Çalışıyor olur. .NET çalışan hizmeti çıkışını görmek için Günlükler'i seçin.

Çalışan hizmetinizin düzgün çalıştığını doğrulamak için çalışan uygulamanızdaki günlükleri görüntüleyebilirsiniz. az container logs Komutunu kullanın:

az container logs -g <resource group> --name <instance name>

Uygun değerleri belirtin:

  • <resource group>: Bu öğreticide kullandığınız kaynak grubu adı.
  • <instance name>: kapsayıcı örneğinin adı.

.NET çalışan hizmeti çıkış günlüklerini görürsünüz. Bu, kapsayıcılı uygulamanızı ACI'ye başarıyla dağıtmış olduğunuz anlamına gelir.

Ayrıca bkz.