Menyebarkan Layanan Pekerja ke Azure

Dalam artikel ini, Anda akan mempelajari cara menyebarkan Layanan Pekerja .NET ke Azure. Dengan Pekerja Anda yang berjalan sebagai Azure Container Instance (ACI) dari Azure Container Registry (ACR), itu dapat bertindak sebagai layanan mikro di cloud. Ada banyak kasus penggunaan untuk layanan yang berjalan lama, dan Layanan Pekerja ada karena alasan ini.

Dalam tutorial ini, Anda akan mempelajari cara:

  • Membuat layanan pekerja.
  • Buat sumber daya registri kontainer.
  • Dorong gambar ke registri kontainer.
  • Sebarkan sebagai instans kontainer.
  • Verifikasi fungsionalitas layanan pekerja.

Tip

Semua kode sumber contoh "Pekerja di .NET" tersedia di Browser Sampel untuk diunduh. Untuk informasi selengkapnya, lihat Menelusuri sampel kode: Pekerja di .NET.

Prasyarat

Membuat proyek baru

Untuk membuat proyek Layanan Pekerja baru dengan Visual Studio, pilih File>Proyek Baru>....Dari dialog Buat proyek baru untuk "Layanan Pekerja", dan pilih templat Layanan Pekerja. Masukkan nama proyek yang diinginkan, pilih lokasi yang sesuai, dan pilih Berikutnya. Pada halaman Informasi tambahan, untuk Kerangka Kerja Target pilih .NET 5.0, dan centang opsi Aktifkan Docker untuk mengaktifkan dukungan docker. Pilih OS Docker yang diinginkan.

Untuk membuat proyek Layanan Pekerja baru dengan Visual Studio Code, Anda dapat menjalankan perintah .NET CLI dari terminal terintegrasi. Untuk informasi selengkapnya, lihat Visual Studio Code: Terminal Terintegrasi.

Buka terminal terintegrasi, dan jalankan dotnet new perintah , dan ganti dengan nama proyek yang <Project.Name> Anda inginkan.

dotnet new worker --name <Project.Name>

Untuk informasi selengkapnya tentang perintah proyek layanan pekerja baru .NET CLI, lihat dotnet pekerja baru.

Untuk membuat proyek Layanan Pekerja baru dengan .NET CLI, buka terminal favorit Anda di direktori kerja. Jalankan dotnet new perintah , dan ganti dengan nama proyek yang <Project.Name> Anda inginkan.

dotnet new worker --name <Project.Name>

Untuk informasi selengkapnya tentang perintah proyek layanan pekerja baru .NET CLI, lihat dotnet pekerja baru.

Buat aplikasi untuk memastikannya memulihkan paket dependen, dan mengkompilasi tanpa kesalahan.

Untuk membuat aplikasi dari Visual Studio, pilih F6 atau pilih> opsi menu Build Build Solution.

Untuk membangun aplikasi dari Visual Studio Code, buka jendela terminal terintegrasi dan jalankan dotnet build perintah dari direktori kerja.

dotnet build

Untuk informasi selengkapnya tentang perintah build .NET CLI, lihat dotnet build.

Untuk membangun aplikasi dari .NET CLI, jalankan dotnet build perintah dari direktori kerja.

dotnet build <path/to/project.csproj>

Tentukan nilai Anda <path/to/project.csproj> , yang merupakan jalur ke file proyek yang akan dibangun. Untuk informasi selengkapnya tentang perintah build .NET CLI, lihat dotnet build.

Menambahkan dukungan Docker

Jika Anda memilih kotak centang Aktifkan Docker dengan benar saat membuat proyek Pekerja baru, lewati ke langkah Buat gambar Docker.

Jika Anda tidak memilih opsi ini, jangan khawatir—Anda masih dapat menambahkannya sekarang. Di Visual Studio, klik kanan pada simpul proyek di Penjelajah Solusi, dan pilih Tambahkan>Dukungan Docker. Anda akan diminta untuk memilih OS Target; pilih OK dengan pilihan OS default.

Docker File Options

Di Visual Studio Code, Anda memerlukan ekstensi Docker dan ekstensi Akun Azure yang terinstal . Buka Palet Perintah, dan pilih opsi Docker: Tambahkan file Docker ke ruang kerja. Jika diminta untuk Memilih Platform Aplikasi, pilih .NET: Core Console. Jika diminta untuk Memilih Proyek, pilih proyek Layanan Pekerja yang Anda buat. Ketika diminta untuk Memilih Sistem Operasi, pilih OS pertama yang tercantum. Ketika diminta apakah menyertakan file Docker Compose opsional atau tidak, pilih Tidak.

Dukungan Docker memerlukan Dockerfile. File ini adalah serangkaian instruksi komprehensif, untuk membangun Layanan Pekerja .NET Anda sebagai gambar Docker. Dockerfile adalah file tanpa ekstensi file. Kode berikut adalah contoh Dockerfile, dan harus ada di direktori akar file proyek.

Dengan CLI, Dockerfiletidak dibuat untuk Anda. Salin kontennya ke dalam file baru bernama Dockerfile di direktori akar proyek.

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"]

Catatan

Anda perlu memperbarui berbagai baris di Dockerfile yang mereferensikan *App.CloudService—ganti ini dengan nama proyek Anda.

Untuk informasi selengkapnya tentang gambar .NET resmi, lihat Docker Hub: .NET Runtime dan Docker Hub: .NET SDK.

Membangun gambar Docker

Untuk membangun gambar Docker, Mesin Docker harus berjalan.

Penting

Saat menggunakan Docker Desktop dan Visual Studio, untuk menghindari kesalahan yang terkait dengan berbagi volume — pastikan bahwa itu diaktifkan.

  1. Pada layar Pengaturan di Docker Desktop, pilih Drive Bersama.
  2. Pilih drive yang berisi file proyek Anda.

Untuk informasi selengkapnya, lihat Memecahkan masalah pengembangan Visual Studio dengan Docker.

Klik kanan pada Dockerfile di Penjelajah Solusi, dan pilih Bangun Gambar Docker. Jendela Output menampilkan, melaporkan docker build kemajuan perintah.

Klik kanan pada Dockerfile di Explorer, dan pilih Bangun Gambar. Saat diminta untuk Menandai gambar sebagai, masukkan appcloudservice:latest. Terminal output Tugas Docker ditampilkan, melaporkan kemajuan perintah build Docker.

Catatan

Jika Anda tidak diminta untuk menandai gambar, ada kemungkinan Visual Studio Code mengandalkan tasks.json yang ada. Jika tag yang digunakan tidak diinginkan, Anda dapat mengubahnya dengan memperbarui docker-build nilai item dockerBuild/tag konfigurasi dalam tasks array. Pertimbangkan bagian konfigurasi contoh berikut:

{
  "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"
  }
}

Buka jendela terminal di direktori akar Dockerfile, dan jalankan perintah docker berikut:

docker build -t appcloudservice:latest -f Dockerfile .

docker build Saat perintah berjalan, perintah memproses setiap baris di Dockerfile sebagai langkah instruksi. Perintah ini membangun gambar dan membuat repositori lokal bernama appcloudservice yang menunjuk ke gambar.

Tip

Dockerfile yang dihasilkan berbeda antara lingkungan pengembangan. Misalnya, jika Anda Menambahkan dukungan Docker dari Visual Studio, Anda mungkin mengalami masalah jika Mencoba Membuat gambar Docker dari Visual Studio Code—karena langkah-langkah Dockerfile bervariasi. Yang terbaik adalah memilih satu lingkungan pengembangan dan menggunakannya sepanjang tutorial ini.

Buat registri kontainer

Sumber daya Azure Container Registry (ACR) memungkinkan Anda membangun, menyimpan, dan mengelola gambar dan artefak kontainer dalam registri privat. Untuk membuat registri kontainer, Anda perlu membuat sumber daya baru di portal Azure.

  1. Pilih Langganan, dan grup Sumber Daya terkait (atau buat yang baru).
  2. Masukkan nama Registri.
  3. Pilih Lokasi.
  4. Pilih SKU yang sesuai, misalnya Dasar.
  5. Pilih Tinjau + buat.
  6. Setelah melihat Validasi lulus, pilih Buat.

Penting

Untuk menggunakan registri kontainer ini saat membuat instans kontainer, Anda harus mengaktifkan pengguna Admin. Pilih Kunci akses, dan aktifkan Pengguna admin.

Sumber daya Azure Container Registry (ACR) memungkinkan Anda membangun, menyimpan, dan mengelola gambar dan artefak kontainer dalam registri privat. Buka jendela terminal di direktori akar Dockerfile, dan jalankan perintah Azure CLI berikut:

Penting

Untuk berinteraksi dengan sumber daya Azure dari Azure CLI, Anda harus diautentikasi untuk sesi terminal Anda. Untuk mengautentikasi, gunakan az login perintah :

az login

Setelah Anda masuk, gunakan az account set perintah untuk menentukan langganan Anda saat Anda memiliki lebih dari satu dan tidak ada set langganan default.

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

Setelah Anda masuk ke Azure CLI, sesi Anda dapat berinteraksi dengan sumber daya yang sesuai.

Jika Anda belum memiliki grup sumber daya yang ingin Anda kaitkan dengan layanan pekerja Anda, buat grup menggunakan az group create perintah :

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

<resource group> Berikan nama, dan <location>. Untuk membuat registri kontainer, panggil az acr create perintah .

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

Ganti tempat penampung dengan nilai Anda sendiri yang sesuai:

  • <registry name>: nama registri.
  • <resource group>: nama grup sumber daya yang Anda gunakan.
  • <sku>: nilai yang diterima, Dasar, Klasik, Premium, atau Standar.

Perintah sebelumnya:

  • Membuat Azure Container Registry, dengan nama registri, dalam grup sumber daya yang ditentukan.
  • Mengaktifkan pengguna Admin—ini diperlukan untuk Azure Container Instances.

Untuk informasi selengkapnya, lihat Mulai Cepat: Membuat registri kontainer Azure.

Dorong gambar ke registri container

Dengan gambar .NET Docker yang dibuat, dan sumber daya registri kontainer dibuat, Anda sekarang dapat mendorong gambar ke registri kontainer.

Klik kanan proyek di Penjelajah Solusi, dan pilih Terbitkan. Dialog Terbitkan ditampilkan. Untuk Target, pilih Azure lalu Berikutnya.

Visual Studio: Publish dialog - select Azure

Untuk Target Tertentu, pilih Azure Container Registry lalu Berikutnya.

Visual Studio: Publish dialog - select container registry

Selanjutnya, untuk Container Registry, pilih Nama langganan yang Anda gunakan untuk membuat sumber daya ACR. Dari area pilihan Registri kontainer, pilih registri kontainer yang Anda buat, lalu pilih Selesai.

Visual Studio: Publish dialog - select container registry details

Ini membuat profil penerbitan, yang dapat digunakan untuk menerbitkan gambar ke registri kontainer. Pilih tombol Terbitkan untuk mendorong gambar ke registri kontainer, jendela Output melaporkan kemajuan penerbitan —dan ketika berhasil diselesaikan, Anda akan melihat pesan "Berhasil diterbitkan".

Pilih Docker dari Bilah Aktivitas di Visual Studio Code. Perluas panel tampilan pohon IMAGES, lalu perluas simpul appcloudservice gambar dan klik kanan pada latest tag.

Visual Studio Code: Docker - push image

Jendela terminal terintegrasi melaporkan kemajuan docker push perintah ke registri kontainer.

Untuk mendorong gambar ke registri kontainer, Anda perlu masuk ke registri terlebih dahulu:

az acr login -n <registry name>

az acr login Perintah masuk ke registri kontainer melalui Docker CLI. Untuk mendorong gambar ke registri kontainer, gunakan perintah az acr build dengan nama registri kontainer Anda sebagai <registry name>:

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

Perintah sebelumnya:

  • Mengemas sumber ke dalam file tar .
  • Mengunggahnya ke registri kontainer.
  • Registri kontainer membuka kemasan file tar .
  • Menjalankan perintah dalam sumber daya registri docker build kontainer terhadap Dockerfile.
  • Menambahkan gambar ke registri kontainer.

Untuk memverifikasi bahwa gambar berhasil didorong ke registri kontainer, navigasikan ke portal Azure. Buka sumber daya registri kontainer, di bawah Layanan, pilih Repositori. Anda akan melihat gambar.

Menyebarkan sebagai instans kontainer

Dari Visual Studio Code, pilih Docker dari Bilah Aktivitas. Perluas node REGISTRIES, dan pilih Koneksi Registri. Pilih Azure saat diminta, dan masuk jika perlu.

Penting

Menyebarkan sebagai instans kontainer dari Visual Studio Code tidak lagi berfungsi di Mac. Untuk informasi selengkapnya, lihat GitHub: Tentang Ekstensi Docker untuk Visual Studio Code.

Visual Studio Code - Docker: Connect registry

Perluas simpul REGISTRI , pilih Azure, langganan > Anda registri > kontainer gambar, lalu klik kanan tag. Pilih Sebarkan Gambar ke Azure Container Instances.

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

Untuk membuat instans kontainer, pertama-tama buat grup kontainer menggunakan az container create perintah .

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

Berikan nilai yang sesuai:

  • <resource group>: nama grup sumber daya yang telah Anda gunakan dalam tutorial ini.
  • <instance name>: nama instans kontainer.
  • <registry name>: nama registri kontainer.
  • <image name>: nama gambar.
  • <password>: kata sandi ke registri kontainer—Anda bisa mendapatkannya dari portal Azure, Kunci Akses sumber daya >Container Registry.

Untuk membuat instans kontainer, Anda juga perlu membuat sumber daya baru di portal Azure.

  1. Pilih Langganan yang sama, dan grup Sumber Daya terkait dari bagian sebelumnya.
  2. Masukkan Nama kontainer—appcloudservice-container.
  3. Pilih Wilayah yang sesuai dengan pilihan Lokasi sebelumnya.
  4. Untuk Sumber gambar, pilih Azure Container Registry.
  5. Pilih Registri menurut nama yang disediakan di langkah sebelumnya.
  6. Pilih tag Gambar dan Gambar.
  7. Pilih Tinjau + buat.
  8. Dengan asumsi Validasi lulus, pilih Buat.

Mungkin perlu waktu sejenak agar sumber daya dibuat, setelah dibuat pilih tombol Buka sumber daya .

Untuk informasi selengkapnya, lihat Mulai Cepat: Membuat instans kontainer Azure.

Memverifikasi fungsionalitas layanan

Segera setelah instans kontainer dibuat, instans mulai berjalan.

Untuk memverifikasi bahwa layanan pekerja Anda berfungsi dengan benar, navigasikan ke portal Azure di sumber daya instans kontainer, pilih opsi Kontainer.

Azure portal: Container instance running

Anda akan melihat kontainer dan Statusnya saat ini. Dalam hal ini, sedang Berjalan. Pilih Log untuk melihat output layanan pekerja .NET.

Untuk memverifikasi bahwa layanan pekerja Anda berfungsi dengan benar, Anda dapat melihat log dari aplikasi yang sedang berjalan. Gunakan perintah az container logs:

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

Berikan nilai yang sesuai:

  • <resource group>: nama grup sumber daya yang telah Anda gunakan dalam tutorial ini.
  • <instance name>: nama instans kontainer.

Anda akan melihat log output layanan pekerja .NET, yang berarti Anda telah berhasil menyebarkan aplikasi kontainer Anda ke ACI.

Baca juga