Gambaran umum Python Container Apps di Azure

Artikel ini menjelaskan cara pergi dari kode proyek Python (misalnya, aplikasi web) ke kontainer Docker yang disebarkan di Azure. Yang dibahas adalah proses umum kontainerisasi, opsi penyebaran untuk kontainer di Azure, dan konfigurasi kontainer khusus Python di Azure.

Sifat kontainer Docker adalah membuat gambar Docker dari kode dan menyebarkan gambar tersebut ke kontainer di Azure mirip di seluruh bahasa pemrograman. Pertimbangan khusus bahasa - Python dalam hal ini - berada dalam konfigurasi selama proses kontainerisasi di Azure, khususnya struktur dan konfigurasi Dockerfile yang mendukung kerangka kerja web Python seperti Django, Flask, dan FastAPI.

Skenario alur kerja kontainer

Untuk pengembangan kontainer Python, beberapa alur kerja umum untuk berpindah dari kode ke kontainer adalah:

Skenario Deskripsi Alur kerja
Dev Buat gambar Python Docker di lingkungan pengembangan Anda. Kode: kode kloning git ke lingkungan dev (dengan Docker terinstal).

Build: Gunakan Docker CLI, VS Code (dengan ekstensi), PyCharm (dengan plugin). Dijelaskan di bagian Bekerja dengan gambar dan kontainer Python Docker.

Uji: Di lingkungan dev dalam kontainer Docker.

Pendorongan: Ke registri seperti Azure Container Registry, Docker Hub, atau registri privat.

Sebarkan: Ke layanan Azure dari registri.
Hybrid Dari lingkungan dev Anda, buat gambar Python Docker di Azure. Kode: kode kloning git ke lingkungan dev (tidak diperlukan agar Docker diinstal).

Build: Visual Studio Code (dengan ekstensi), Azure CLI.

Pendorongan: Ke Azure Container Registry

Sebarkan: Ke layanan Azure dari registri.
Azure Semua di cloud; gunakan Azure Cloud Shell untuk membangun kode gambar Python Docker dari repositori GitHub. Kode: git mengkloning repositori GitHub ke Azure Cloud Shell.

Build: Di Azure Cloud Shell, gunakan Azure CLI atau Docker CLI.

Pendorongan: Ke registri seperti Azure Container Registry, Docker Hub, atau registri privat.

Sebarkan: Ke layanan Azure dari registri.

Tujuan akhir alur kerja ini adalah agar kontainer berjalan di salah satu sumber daya Azure yang mendukung kontainer Docker seperti yang tercantum di bagian berikutnya.

Lingkungan dev dapat menjadi stasiun kerja lokal Anda dengan Visual Studio Code atau PyCharm, Codespaces (lingkungan pengembangan yang dihosting di cloud), atau Visual Studio Dev Containers (kontainer sebagai lingkungan pengembangan).

Opsi kontainer penyebaran di Azure

Aplikasi kontainer Python didukung di layanan berikut.

Layanan Deskripsi
Aplikasi Web untuk Kontainer Layanan hosting yang dikelola sepenuhnya untuk aplikasi web kontainer termasuk situs web dan API web. Aplikasi web kontainer di Azure App Service dapat menskalakan sesuai kebutuhan dan menggunakan alur kerja CI/CD yang disederhanakan dengan Docker Hub, Azure Container Registry, dan GitHub. Ideal sebagai on-ramp yang mudah bagi pengembang untuk memanfaatkan platform Azure App Service yang dikelola sepenuhnya, tetapi yang juga menginginkan satu artefak yang dapat disebarkan yang berisi aplikasi dan semua dependensinya.

Contoh: Menyebarkan aplikasi web Flask atau FastPI di Azure App Service.
Azure Container Apps (ACA) Layanan kontainer tanpa server yang dikelola sepenuhnya yang didukung oleh Kubernetes dan teknologi sumber terbuka seperti Dapr, KEDA, dan utusan. Berdasarkan praktik terbaik dan dioptimalkan untuk kontainer tujuan umum. Infrastruktur kluster dikelola oleh ACA dan akses langsung ke API Kubernetes tidak didukung. Menyediakan banyak konsep khusus aplikasi di atas kontainer, termasuk sertifikat, revisi, skala, dan lingkungan. Ideal untuk tim yang ingin mulai membangun layanan mikro kontainer tanpa harus mengelola kompleksitas Kubernetes yang mendasar.

Contoh: Menyebarkan aplikasi web Flask atau FastPI di Azure Container Apps.
Azure Container Instances (ACI) Penawaran tanpa server yang menyediakan satu pod kontainer terisolasi Hyper-V sesuai permintaan. Ditagih berdasarkan konsumsi daripada sumber daya yang disediakan. Konsep seperti skala, penyeimbangan beban, dan sertifikat tidak disediakan dengan kontainer ACI. Pengguna sering berinteraksi dengan ACI melalui layanan lain; misalnya, AKS untuk orkestrasi. Ideal jika Anda memerlukan blok penyusun yang kurang "berpendapat" yang tidak selaras dengan skenario yang dioptimalkan oleh Azure Container Apps.

Contoh: Buat gambar kontainer untuk penyebaran ke Azure Container Instances. (Tutorial ini tidak spesifik untuk Python, tetapi konsep yang ditampilkan berlaku untuk semua bahasa.)
Azure Kubernetes Service (AKS) Opsi Kubernetes yang dikelola sepenuhnya di Azure. Mendukung akses langsung ke API Kubernetes dan menjalankan beban kerja Kubernetes apa pun. Kluster penuh berada di langganan Anda, dengan konfigurasi dan operasi kluster dalam kendali dan tanggung jawab Anda. Ideal untuk tim yang mencari versi Kubernetes yang dikelola sepenuhnya di Azure.

Contoh: Sebarkan kluster Azure Kubernetes Service menggunakan Azure CLI.
Azure Functions Solusi event-driven, serverless functions-as-a-service (FAAS). Berbagi banyak karakteristik dengan Azure Container Apps sekeliling skala dan integrasi dengan peristiwa, tetapi dioptimalkan untuk fungsi sementara yang disebarkan sebagai kode atau kontainer. Ideal untuk tim yang ingin memicu eksekusi fungsi pada peristiwa; misalnya, untuk mengikat ke sumber data lain.

Contoh: Buat fungsi di Linux menggunakan kontainer kustom.

Untuk perbandingan yang lebih rinci dari layanan ini, lihat Membandingkan Aplikasi Kontainer dengan opsi kontainer Azure lainnya.

Lingkungan virtual dan kontainer

Saat Anda menjalankan proyek Python di lingkungan dev, menggunakan lingkungan virtual adalah cara umum untuk mengelola dependensi dan memastikan reproduksi penyiapan proyek Anda. Lingkungan virtual memiliki penerjemah, pustaka, dan skrip Python yang diinstal yang diperlukan oleh kode proyek yang berjalan di lingkungan tersebut. Dependensi untuk proyek Python dikelola melalui file requirements.txt .

Tip

Dengan kontainer, lingkungan virtual tidak diperlukan kecuali Anda menggunakannya untuk pengujian atau alasan lain. Jika Anda menggunakan lingkungan virtual, jangan salin ke gambar Docker. Gunakan file .dockerignore untuk mengecualikannya.

Anda dapat menganggap kontainer Docker sebagai menyediakan kemampuan serupa sebagai lingkungan virtual, tetapi dengan keuntungan lebih lanjut dalam reproduksi dan portabilitas. Kontainer Docker dapat dijalankan di mana saja kontainer dapat dijalankan, terlepas dari OS.

Kontainer Docker berisi kode proyek Python Anda dan semua yang perlu dijalankan kode tersebut. Untuk sampai ke titik itu, Anda perlu membangun kode proyek Python Anda ke dalam gambar Docker, lalu membuat kontainer, instans gambar tersebut yang dapat dijalankan.

Untuk kontainerisasi proyek Python, file kuncinya adalah:

File proyek Deskripsi
requirements.txt Digunakan selama pembuatan gambar Docker untuk mendapatkan dependensi yang benar ke dalam gambar.
Dockerfile Digunakan untuk menentukan cara membangun gambar Python Docker. Untuk informasi selengkapnya, lihat bagian Instruksi dockerfile untuk Python.
.dockerignore File dan direktori di .dockerignore tidak disalin ke gambar Docker dengan COPY perintah di Dockerfile. File .dockerignore mendukung pola pengecualian yang mirip dengan file .gitignore . Untuk informasi selengkapnya, lihat file .dockerignore.

Mengecualikan file membantu performa build gambar, tetapi juga harus digunakan untuk menghindari penambahan informasi sensitif ke gambar tempat file dapat diperiksa. Misalnya, .dockerignore harus berisi baris untuk mengabaikan .env dan .venv (lingkungan virtual).

Pengaturan kontainer untuk kerangka kerja web

Kerangka kerja web memiliki port default di mana mereka mendengarkan permintaan web. Saat bekerja dengan beberapa solusi kontainer Azure, Anda perlu menentukan port yang didengarkan kontainer Anda yang akan menerima lalu lintas.

Kerangka kerja web Port
Django 8000
Labu 5000 atau 5002
FastAPI (uvicorn) 8000 atau 80

Tabel berikut ini memperlihatkan cara mengatur port untuk perbedaan solusi kontainer Azure.

Solusi kontainer Azure Cara mengatur port aplikasi web
Aplikasi Web untuk Kontainer Secara default, App Service mengasumsikan container kustom Anda mendengarkan pada port 80 atau port 8080. Jika kontainer Anda mendengarkan port yang berbeda, atur pengaturan aplikasi WEBSITES_PORT di aplikasi App Service Anda. Untuk informasi selengkapnya, lihat Mengonfigurasi kontainer kustom untuk Azure App Service.
Azure Containers Apps Azure Container Apps memungkinkan Anda mengekspos aplikasi kontainer ke web publik, ke VNET Anda, atau ke aplikasi kontainer lain dalam lingkungan Anda dengan mengaktifkan ingress. Atur ingress targetPort ke port yang didengarkan kontainer Anda untuk permintaan masuk. Titik akhir ingress aplikasi selalu diekspos pada port 443. Untuk informasi selengkapnya, lihat Menyiapkan https atau masuknya TCP di Azure Container Apps.
Azure Container Instances, Azure Kubernetes Atur port selama pembuatan kontainer. Anda perlu memastikan solusi Anda memiliki kerangka kerja web, server aplikasi (misalnya, gunicorn, uvicorn), dan server web (misalnya, nginx). Misalnya, Anda dapat membuat dua kontainer, satu kontainer dengan kerangka kerja web dan server aplikasi, dan kerangka kerja lain dengan server web. Kedua kontainer berkomunikasi pada satu port, dan kontainer server web mengekspos 80/443 untuk permintaan eksternal.

Python Dockerfile

Dockerfile adalah file teks yang berisi instruksi untuk membangun gambar Docker. Baris pertama menyatakan gambar dasar untuk memulai. Baris ini diikuti dengan instruksi untuk menginstal program yang diperlukan, menyalin file, dan instruksi lainnya untuk membuat lingkungan kerja. Misalnya, beberapa contoh khusus Python untuk petunjuk kunci Python Dockerfile ditampilkan dalam tabel di bawah ini.

Instruksi Tujuan Contoh
DARI Mengatur gambar dasar untuk instruksi berikutnya. FROM python:3.8-slim
MENGEKSPOS Memberi tahu Docker bahwa kontainer mendengarkan port jaringan yang ditentukan pada runtime. EXPOSE 5000
COPY Menyalin file atau direktori dari sumber yang ditentukan dan menambahkannya ke sistem file kontainer di jalur tujuan yang ditentukan. COPY . /app
MENJALANKAN Menjalankan perintah di dalam gambar Docker. Misalnya, tarik dependensi. Perintah berjalan sekali pada waktu build. RUN python -m pip install -r requirements.txt
CMD Perintah menyediakan default untuk menjalankan kontainer. Hanya ada satu instruksi CMD. CMD ["gunicorn", "--bind", "0.0.0.0:5000", "wsgi:app"]

Perintah build Docker membangun gambar Docker dari Dockerfile dan konteks. Konteks build adalah kumpulan file yang terletak di jalur atau URL yang ditentukan. Biasanya, Anda akan membangun gambar dari akar proyek Python Anda dan jalur untuk perintah build adalah "." seperti yang ditunjukkan dalam contoh berikut.

docker build --rm --pull  --file "Dockerfile"  --tag "mywebapp:latest"  .

Proses build dapat merujuk ke salah satu file dalam konteks. Misalnya, build Anda dapat menggunakan instruksi COPY untuk mereferensikan file dalam konteks. Berikut adalah contoh Dockerfile untuk proyek Python menggunakan kerangka kerja Flask :

FROM python:3.8-slim

EXPOSE 5000

# Keeps Python from generating .pyc files in the container.
ENV PYTHONDONTWRITEBYTECODE=1

# Turns off buffering for easier container logging
ENV PYTHONUNBUFFERED=1

# Install pip requirements.
COPY requirements.txt .
RUN python -m pip install -r requirements.txt

WORKDIR /app
COPY . /app

# Creates a non-root user with an explicit UID and adds permission to access the /app folder.
RUN adduser -u 5678 --disabled-password --gecos "" appuser && chown -R appuser /app
USER appuser

# Provides defaults for an executing container; can be overridden with Docker CLI.
CMD ["gunicorn", "--bind", "0.0.0.0:5000", "wsgi:app"]

Anda dapat membuat Dockerfile secara manual atau membuatnya secara otomatis dengan Visual Studio Code dan ekstensi Docker. Untuk informasi selengkapnya, lihat Membuat file Docker.

Perintah build Docker adalah bagian dari Docker CLI. Saat Anda menggunakan ID Seperti Visual Studio Code atau PyCharm, perintah UI untuk bekerja dengan gambar Docker memanggil perintah build untuk Anda dan mengotomatiskan opsi penentuan.

Bekerja dengan gambar dan kontainer Python Docker

Visual Studio Code dan PyCharm

Bekerja di lingkungan pengembangan terintegrasi (IDE) untuk pengembangan kontainer Python tidak diperlukan tetapi dapat menyederhanakan banyak tugas terkait kontainer. Berikut adalah beberapa hal yang dapat Anda lakukan dengan VISUAL Code dan PyCharm.

  • Unduh dan buat gambar Docker.

    • Buat gambar di lingkungan dev Anda.
    • Buat gambar Docker di Azure tanpa Docker yang diinstal di lingkungan pengembangan. (Untuk PyCharm, gunakan Azure CLI untuk membuat gambar di Azure.)
  • Buat dan jalankan kontainer Docker dari gambar yang ada, gambar yang ditarik, atau langsung dari Dockerfile.

  • Jalankan aplikasi multikontainer dengan Docker Compose.

  • Koneksi dan bekerja dengan registri kontainer seperti Docker Hub, GitLab, JetBrains Space, Docker V2, dan registri Docker yang dihost sendiri lainnya.

  • (Khusus Visual Studio Code) Tambahkan file dockerfile dan Docker yang disesuaikan untuk proyek Python Anda.

Untuk menyiapkan Visual Studio Code dan PyCharm untuk menjalankan kontainer Docker di lingkungan dev Anda, gunakan langkah-langkah berikut.

Jika Anda belum melakukannya, instal Azure Tools for VS Code.

Petunjuk Cuplikan layar
Langkah 1: Gunakan SHIFT + ALT + A untuk membuka ekstensi Azure dan mengonfirmasi bahwa Anda tersambung ke Azure.

Anda juga dapat memilih ikon Azure pada bilah ekstensi Visual Studio Code.

Jika Anda tidak masuk, pilih Masuk ke Azure dan ikuti perintahnya.

Jika Anda mengalami masalah saat mengakses langganan Azure, mungkin karena Anda berada di belakang proksi. Untuk mengatasi masalah koneksi, lihat Koneksi jaringan di Visual Studio Code.
Screenshot showing how Azure Tools looks once signed in.Screenshot showing how Azure Tools looks if you aren't signed in.
Langkah 2: Gunakan CTRL + SHIFT + X untuk membuka Ekstensi, mencari ekstensi Docker, dan menginstal ekstensi.

Anda juga dapat memilih ikon Ekstensi pada bilah ekstensi Visual Studio Code.
Screenshot showing how to add Docker extension to VS Code.
Langkah 3: Pilih ikon Docker di bilah ekstensi, perluas gambar, dan klik kanan gambar yang menjalankannya sebagai kontainer. Screenshot showing how to use the Docker extension in VS Code to run a container from a Docker image.
Langkah 4: Pantau output eksekusi Docker di jendela Terminal . Screenshot showing an example of running a container in VS Code.

Azure CLI dan Docker CLI

Anda juga dapat bekerja dengan gambar dan kontainer Python Docker menggunakan Azure CLI dan Docker CLI. Vs Code dan PyCharm memiliki terminal tempat Anda dapat menjalankan CLI ini.

Gunakan CLI saat Anda menginginkan kontrol yang lebih baik atas argumen build dan run, dan untuk otomatisasi. Misalnya, perintah berikut menunjukkan cara menggunakan azure CLI az acr build untuk menentukan nama gambar Docker.

az acr build --registry <registry-name> \
  --resource-group <resource-group> \
  --target pythoncontainerwebapp:latest .

Sebagai contoh lain, pertimbangkan perintah berikut yang menunjukkan cara menggunakan perintah jalankan Docker CLI. Contoh menunjukkan cara menjalankan kontainer Docker yang berkomunikasi ke instans MongoDB di lingkungan dev Anda, di luar kontainer. Nilai yang berbeda untuk menyelesaikan perintah lebih mudah diotomatiskan saat ditentukan dalam baris perintah.

docker run --rm -it \
  --publish <port>:<port> --publish 27017:27017 \
  --add-host mongoservice:<your-server-IP-address> \
  --env CONNECTION_STRING=mongodb://mongoservice:27017 \
  --env DB_NAME=<database-name> \
  --env COLLECTION_NAME=<collection-name> \
  containermongo:latest  

Untuk informasi selengkapnya tentang skenario ini, lihat Membangun dan menguji aplikasi web Python dalam kontainer secara lokal.

Variabel lingkungan dalam kontainer

Proyek Python sering menggunakan variabel lingkungan untuk meneruskan data ke kode. Misalnya, Anda dapat menentukan informasi koneksi database dalam variabel lingkungan sehingga dapat dengan mudah diubah selama pengujian. Atau, saat menyebarkan proyek ke produksi, koneksi database dapat diubah untuk merujuk ke instans database produksi.

Paket seperti python-dotenv sering digunakan untuk membaca pasangan kunci-nilai dari file .env dan mengaturnya sebagai variabel lingkungan. File .env berguna saat berjalan di lingkungan virtual tetapi tidak disarankan saat bekerja dengan kontainer. Jangan salin file .env ke dalam gambar Docker, terutama jika berisi informasi sensitif dan kontainer akan diumumkan ke publik. Gunakan file .dockerignore untuk mengecualikan file agar tidak disalin ke dalam gambar Docker. Untuk informasi selengkapnya, lihat bagian Lingkungan virtual dan kontainer di artikel ini.

Anda dapat meneruskan variabel lingkungan ke kontainer dengan beberapa cara:

  1. Didefinisikan dalam Dockerfile sebagai instruksi ENV .
  2. Diteruskan sebagai --build-arg argumen dengan perintah build Docker.
  3. Diteruskan sebagai --secret argumen dengan perintah build Docker dan backend BuildKit .
  4. Diteruskan sebagai --env atau --env-file argumen dengan perintah jalankan Docker.

Dua opsi pertama memiliki kelemahan yang sama seperti yang disebutkan di atas dengan file .env , yaitu bahwa Anda mengodekan informasi yang berpotensi sensitif ke dalam gambar Docker. Anda dapat memeriksa gambar Docker dan melihat variabel lingkungan, misalnya, dengan pemeriksaan gambar docker perintah.

Opsi ketiga dengan BuildKit memungkinkan Anda meneruskan informasi rahasia untuk digunakan di Dockerfile untuk membangun gambar docker dengan cara yang aman yang tidak akan tersimpan di gambar akhir.

Opsi keempat untuk meneruskan variabel lingkungan dengan perintah jalankan Docker berarti gambar Docker tidak berisi variabel. Namun, variabel masih terlihat memeriksa instans kontainer (misalnya, dengan pemeriksaan kontainer docker). Opsi ini mungkin dapat diterima ketika akses ke instans kontainer dikontrol atau dalam skenario pengujian atau pengembangan.

Berikut adalah contoh meneruskan variabel lingkungan menggunakan perintah jalankan Docker CLI dan menggunakan --env argumen .

# PORT=8000 for Django and 5000 for Flask
export PORT=<port-number>

docker run --rm -it \
  --publish $PORT:$PORT \
  --env CONNECTION_STRING=<connection-info> \
  --env DB_NAME=<database-name> \
  <dockerimagename:tag>

Jika Anda menggunakan Visual Studio Code atau PyCharm, opsi UI untuk bekerja dengan gambar dan kontainer pada akhirnya menggunakan perintah Docker CLI seperti yang ditunjukkan di atas.

Terakhir, menentukan variabel lingkungan saat menyebarkan kontainer di Azure berbeda dari menggunakan variabel lingkungan di lingkungan dev Anda. Misalnya:

  • Untuk Aplikasi Web untuk Kontainer, Anda mengonfigurasi pengaturan aplikasi selama konfigurasi App Service. Pengaturan ini tersedia untuk kode aplikasi Anda sebagai variabel lingkungan dan diakses menggunakan pola os.environ standar. Anda dapat mengubah nilai setelah penyebaran awal saat diperlukan. Untuk informasi selengkapnya, lihat Mengakses pengaturan aplikasi sebagai variabel lingkungan.

  • Untuk Azure Container Apps, Anda mengonfigurasi variabel lingkungan selama konfigurasi awal aplikasi kontainer. Modifikasi variabel lingkungan berikutnya membuat revisi kontainer. Selain itu, Azure Container Apps memungkinkan Anda menentukan rahasia di tingkat aplikasi lalu mereferensikannya dalam variabel lingkungan. Untuk informasi selengkapnya, lihat Mengelola rahasia di Azure Container Apps.

Sebagai opsi lain, Anda dapat menggunakan Service Koneksi or untuk membantu Anda menyambungkan layanan komputasi Azure ke layanan backing lainnya. Layanan ini mengonfigurasi pengaturan jaringan dan informasi koneksi (misalnya, menghasilkan variabel lingkungan) antara layanan komputasi dan layanan dukungan target di bidang manajemen.

Menampilkan log kontainer

Lihat log instans kontainer untuk melihat output pesan diagnostik dari kode dan untuk memecahkan masalah dalam kode kontainer Anda. Berikut adalah beberapa cara untuk melihat log saat menjalankan kontainer di lingkungan dev Anda:

  • Menjalankan kontainer dengan Visual Studio Code atau PyCharm, seperti yang ditunjukkan di bagian Visual Studio Code dan PyCharm, Anda dapat melihat log di jendela terminal yang dibuka saat eksekusi Docker dijalankan.

  • Jika Anda menggunakan perintah jalankan Docker CLI dengan bendera -itinteraktif , Anda akan melihat output mengikuti perintah .

  • Di Docker Desktop, Anda juga dapat melihat log untuk kontainer yang sedang berjalan.

Saat Anda menyebarkan kontainer di Azure, Anda juga memiliki akses ke log kontainer. Berikut adalah beberapa layanan Azure dan cara mengakses log kontainer di portal Azure.

Layanan Azure Cara mengakses log di portal Azure
Aplikasi Web untuk Kontainer Buka sumber daya Diagnosis dan selesaikan masalah untuk melihat log. Diagnostik adalah pengalaman cerdas dan interaktif untuk membantu Anda memecahkan masalah aplikasi tanpa memerlukan konfigurasi. Untuk tampilan log real time, buka aliran Log Pemantauan - . Untuk kueri dan konfigurasi log yang lebih rinci, lihat sumber daya lain di bawah Pemantauan.
Azure Container Apps Buka sumber daya lingkungan Diagnosis dan selesaikan masalah untuk memecahkan masalah lingkungan. Lebih sering, Anda mungkin ingin melihat log kontainer. Di sumber daya kontainer, di bawah manajemen Revisi Aplikasi - , pilih revisi dan dari sana Anda dapat melihat log sistem dan konsol. Untuk kueri dan konfigurasi log yang lebih rinci, lihat sumber daya di bawah Pemantauan.
Azure Container Instances Buka sumber daya Kontainer dan pilih Log.

Untuk layanan yang sama yang tercantum di atas, berikut adalah perintah Azure CLI untuk mengakses log.

Layanan Azure Perintah Azure CLI untuk mengakses log
Aplikasi Web untuk Kontainer az webapp log
Azure Container Apps log az containerapps
Azure Container Instances log kontainer az

Ada juga dukungan untuk melihat log di Visual Studio Code. Anda harus menginstal Azure Tools for VS Code . Di bawah ini adalah contoh melihat log Web Apps for Containers (App Service) di Visual Studio Code.

Screenshot showing how to view logs in VS Code for Web Apps for Containers.

Langkah berikutnya