Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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 (ACR)'den bir Azure Container Instance (ACI) olarak çalıştırıldığında, bulutta bir mikro hizmet olarak görev yapabilir. Uzun süreli hizmetler için birçok kullanım örneği vardır ve bu nedenle Worker Service vardır.
Bu eğitimde şunları öğreniyorsunuz:
- Çalışan hizmeti oluşturun.
- Kapsayıcı kayıt kaynağı oluşturun.
- Container kaydına imaj gönderme.
- Kapsayıcı örneği olarak dağıtın.
- Çalışan hizmeti işlevselliğini doğrulayın.
Tavsiye
".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
- .NET 5.0 SDK veya üzeri.
- Docker Desktop (Windows veya Mac).
- Aktif bir aboneliğe sahip bir Azure hesabı. Ücretsiz bir hesap oluşturun.
- Seçtiğiniz geliştirici ortamınıza bağlı olarak:
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, dotnet new komutunu çalıştırın ve <Project.Name> öğesini istediğiniz proje adıyla değiştirin.
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 <Project.Name> yerine istediğiniz proje adını girin.
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ı veyaDerleme Çö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>
<path/to/project.csproj> değerini, oluşturulacak proje dosyasının yolu olarak 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'ndeproje düğümüne sağ tıklayın veDocker Desteği> seçin. Bir Hedef işletim sistemi seçmeniz istenir; Varsayılan işletim sistemi seçimiyle Tamam'ı seçin.
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 Dockerfile sizin 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@sha256:e6b552fd7a0302e4db30661b16537f7efcdc0b67790a47dbf67a5e798582d3a5 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@sha256:35792ea4ad1db051981f62b313f1be3b46b1f45cadbaa3c288cd0d3056eefb83 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"]
Uyarı
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 birim paylaşımının etkinleştirildiğinden emin olun.
- Docker Desktop'taki Ayarlar ekranında Paylaşılan Sürücüler'i seçin.
- Proje dosyalarınızı içeren sürücüleri seçin.
Daha fazla bilgi için bkz. Docker ile Visual Studio geliştirme sorunlarını giderme.
Çözüm Gezgini'ndeDockerfile dosyasına sağ tıklayın ve Docker Görüntüsü Derle'yi seçin. Çıkış penceresi, komut ilerleme durumunu bildirir şekilde görüntülenir.
Gezgin'deDockerfile dosyasına sağ tıklayın ve Görüntü Oluştur'a tıklayın.
Görüntüyü etiketle sorulduğunda girinappcloudservice:latest.
Docker görevi çıkış terminali görüntülenir ve Docker derleme komutu ilerleme durumunu bildirir.
Uyarı
Resmi etiketlemeniz istenmezse Visual Studio Code mevcut bir tasks.jsonkullanıyor olabilir. Kullanılan etiket istenmeyen bir etiketse, dizideki docker-build yapılandırma öğesinin dockerBuild/tagtasks 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.
Tavsiye
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.
- Abonelik'i ve ilgili Kaynak grubunu seçin (veya yeni bir tane oluşturun).
- Kayıt defteri adını girin.
- Bir Konum seçin.
- Uygun bir SKU seçin, örneğin Temel.
- Seçin, gözden geçir ve oluştur.
- 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ısını 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 <location> belirtin. 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ısı 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.
İmajı container kayıt defterine yükleme
.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'nde 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.
Belirli Hedef için Azure Container Registry'yi ve ardından İleri'yi seçin.
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.
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'ndanDocker'ı 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.
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>
az acr login komutu 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 tar dosyasına paketler.
- Kapsayıcı kayıt defterine yükler.
- Kapsayıcı kayıt defteri tar dosyasını açar.
-
docker buildkomutunu Dockerfile için kapsayıcı kayıt defteri kaynağında çalıştırır. - Görüntüyü container 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ğıt
Visual Studio Code'da Etkinlik Çubuğu'ndanDocker'ı seçin. REGISTRIES düğümünü genişletin ve Kayıt Defterine Bağlan'ı 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.
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.
Kapsayıcı örneği oluşturmak için önce az container create komutunu kullanarak 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 yeni bir kaynak oluşturmanız da gerekir.
- Önceki bölümden aynı Aboneliği ve ilgili Kaynak grubunu seçin.
-
Kapsayıcı adı girin—
appcloudservice-container - Önceki Konum seçimine karşılık gelen bir Bölge seçin.
- Görüntü kaynağı için Azure Container Registry'yi seçin.
- Önceki adımda sağlanan ada göre Kayıt Defteri'ni seçin.
- Görüntü ve Görüntü etiketini seçin.
- Seçin, gözden geçir ve oluştur.
- 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.
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.