Acara
17 Mar, 21 - 21 Mar, 10
Bergabunglah dengan seri meetup untuk membangun solusi AI yang dapat diskalakan berdasarkan kasus penggunaan dunia nyata dengan sesama pengembang dan pakar.
Daftar sekarangBrowser ini sudah tidak didukung.
Mutakhirkan ke Microsoft Edge untuk memanfaatkan fitur, pembaruan keamanan, dan dukungan teknis terkini.
Tutorial ini menunjukkan kepada Anda cara menyebarkan aplikasi web Python Flask atau FastAPI ke Azure App Service menggunakan fitur Web App for Containers. Aplikasi Web untuk Kontainer menyediakan jalan yang mudah bagi pengembang untuk memanfaatkan platform Azure App Service yang dikelola sepenuhnya, tetapi yang juga menginginkan artefak yang dapat disebarkan tunggal yang berisi aplikasi dan semua dependensinya. Untuk informasi selengkapnya tentang menggunakan kontainer di Azure, lihat Membandingkan opsi kontainer Azure.
Dalam tutorial ini, Anda menggunakan Docker CLI dan Docker untuk secara opsional membuat gambar Docker dan mengujinya secara lokal. Anda menggunakan Azure CLI untuk membuat gambar Docker di Azure Container Registry dan menyebarkannya ke Azure App Service. Aplikasi web dikonfigurasi dengan identitas terkelola yang ditetapkan sistem (koneksi tanpa kata sandi) dan akses berbasis peran Azure untuk menarik gambar Docker dari Azure Container Registry selama penyebaran. Anda juga dapat menyebarkan dengan Visual Studio Code dengan Ekstensi Alat Azure terinstal.
Untuk contoh membangun dan membuat gambar Docker untuk dijalankan di Azure Container Apps, lihat Menyebarkan aplikasi web Flask atau FastPI di Azure Container Apps.
Catatan
Tutorial ini menunjukkan pembuatan gambar Docker yang kemudian dapat dijalankan di App Service. Ini tidak diperlukan untuk menggunakan App Service. Anda dapat menyebarkan kode langsung dari ruang kerja lokal ke App Service tanpa membuat gambar Docker. Misalnya, lihat Mulai Cepat: Menyebarkan aplikasi web Python (Django atau Flask) ke Azure App Service.
Untuk menyelesaikan tutorial ini, Anda perlu:
Akun Azure tempat Anda dapat menyebarkan aplikasi web ke Azure App Service dan Azure Container Registry. Jika Anda tidak memiliki langganan Azure, buat akun gratis sebelum Anda memulai.
Azure CLI untuk membuat gambar Docker dan menyebarkannya ke App Service. Dan secara opsional, Dockerdan Docker CLI untuk membuat Docker dan mengujinya di lingkungan lokal Anda.
Di lingkungan lokal Anda, dapatkan kodenya.
git clone https://github.com/Azure-Samples/msdocs-python-flask-webapp-quickstart.git
cd msdocs-python-flask-webapp-quickstart
Tambahkan Dockerfile untuk menginstruksikan Docker cara membuat gambar. Dockerfile menentukan penggunaan Gunicorn, server web tingkat produksi yang meneruskan permintaan web ke kerangka kerja Flask dan FastAPI. Perintah ENTRYPOINT dan CMD menginstruksikan Gunicorn untuk menangani permintaan objek aplikasi.
# syntax=docker/dockerfile:1
FROM python:3.11
WORKDIR /code
COPY requirements.txt .
RUN pip3 install -r requirements.txt
COPY . .
EXPOSE 50505
ENTRYPOINT ["gunicorn", "app:app"]
50505
digunakan untuk port kontainer (internal) dalam contoh ini, tetapi Anda dapat menggunakan port gratis apa pun.
Periksa file requirements.txt untuk memastikan file berisi gunicorn
.
Flask==3.1.0
gunicorn
Tambahkan file .dockerignore untuk mengecualikan file yang tidak perlu dari gambar.
.git*
**/*.pyc
.venv/
Gunicorn dapat dikonfigurasi dengan file gunicorn.conf.py . Ketika file gunicorn.conf.py terletak di direktori yang sama tempat gunicorn dijalankan, Anda tidak perlu menentukan lokasinya di Dockerfile. Untuk informasi selengkapnya tentang menentukan file konfigurasi, lihat Pengaturan gunicorn.
Dalam tutorial ini, file konfigurasi yang disarankan mengonfigurasi gunicorn untuk meningkatkan jumlah pekerjanya berdasarkan jumlah inti CPU yang tersedia. Untuk informasi selengkapnya tentang pengaturan file gunicorn.conf.py , lihat Konfigurasi gunicorn.
# Gunicorn configuration file
import multiprocessing
max_requests = 1000
max_requests_jitter = 50
log_file = "-"
bind = "0.0.0.0:50505"
workers = (multiprocessing.cpu_count() * 2) + 1
threads = workers
timeout = 120
Buat gambar secara lokal.
Catatan
docker build
Jika perintah mengembalikan kesalahan, pastikan deamon docker berjalan. Di Windows, pastikan Docker Desktop sedang berjalan.
Jalankan gambar secara lokal dalam kontainer Docker.
docker run --detach --publish 5000:50505 flask-demo
http://localhost:5000
Buka URL di browser Anda untuk melihat aplikasi web berjalan secara lokal.
Opsi --detach
menjalankan kontainer di latar belakang. Opsi --publish
memetakan port kontainer ke port pada host. Port host (eksternal) adalah yang pertama dalam pasangan, dan port kontainer (internal) adalah yang kedua. Untuk informasi selengkapnya, lihat Referensi eksekusi Docker.
Jalankan perintah az login untuk masuk ke Azure.
az login
Jalankan perintah az upgrade untuk memastikan versi Azure CLI Anda saat ini.
az upgrade
Buat grup dengan perintah az group create .
az group create --name web-app-simple-rg --location eastus
Grup sumber daya Azure adalah kontainer logis tempat sumber daya Azure disebarkan dan dikelola. Saat membuat grup sumber daya, Anda menentukan lokasi, seperti eastus.
Buat Azure Container Registry dengan perintah az acr create . Ganti <container-registry-name>
dengan nama unik untuk instans Anda.
az acr create --resource-group web-app-simple-rg \
--name <container-registry-name> --sku Basic
Catatan
Nama registri harus unik di Azure. Jika Anda mendapatkan kesalahan, coba nama lain. Nama registri dapat terdiri dari 5-50 karakter alfanumerik. Tanda hubung dan garis bawah tidak diperbolehkan. Untuk mempelajari selengkapnya, lihat Aturan nama Azure Container Registry. Jika Anda menggunakan nama yang berbeda, pastikan Anda menggunakan nama Anda daripada webappacr123
dalam perintah yang mereferensikan artefak registri dan registri di bagian berikut.
Azure Container Registry adalah registri Docker privat yang menyimpan gambar untuk digunakan dalam Azure Container Instances, Azure App Service, Azure Kubernetes Service, dan layanan lainnya. Saat membuat registri, Anda menentukan nama, SKU, dan grup sumber daya.
Buat gambar Docker di Azure dengan perintah az acr build . Perintah menggunakan Dockerfile di direktori saat ini, dan mendorong gambar ke registri.
az acr build \
--resource-group web-app-simple-rg \
--registry <container-registry-name> \
--image webappsimple:latest .
Opsi --registry
menentukan nama registri, dan --image
opsi menentukan nama gambar. Nama gambar dalam format registry.azurecr.io/repository:tag
.
Buat paket App Service dengan perintah az appservice plan .
az appservice plan create \
--name webplan \
--resource-group web-app-simple-rg \
--sku B1 \
--is-linux
Atur variabel lingkungan ke ID langganan Anda. Ini digunakan dalam --scope
parameter di perintah berikutnya.
SUBSCRIPTION_ID=$(az account show --query id --output tsv)
Perintah untuk membuat variabel lingkungan ditampilkan untuk shell Bash. Ubah sintaks yang sesuai untuk lingkungan lain.
Buat aplikasi web dengan perintah az webapp create .
az webapp create \
--resource-group web-app-simple-rg \
--plan webplan --name <container-registry-name> \
--assign-identity [system] \
--role AcrPull \
--scope /subscriptions/$SUBSCRIPTION_ID/resourceGroups/web-app-simple-rg \
--acr-use-identity --acr-identity [system] \
--container-image-name <container-registry-name>.azurecr.io/webappsimple:latest
Catatan:
Nama aplikasi web harus unik di Azure. Jika Anda mendapatkan kesalahan, coba nama lain. Nama dapat terdiri dari karakter alfanumerik dan tanda hubung, tetapi tidak dapat dimulai atau diakhir dengan tanda hubung. Untuk mempelajari selengkapnya, lihat Aturan nama Microsoft.Web.
Jika Anda menggunakan nama yang berbeda dari webappacr123
untuk Azure Container Registry, pastikan Anda memperbarui --container-image-name
parameter dengan tepat.
Parameter --assign-identity
, --role
, dan --scope
mengaktifkan identitas terkelola yang ditetapkan sistem di aplikasi web dan menetapkan peranAcrPull
grup sumber daya. Ini memberikan izin identitas terkelola untuk menarik gambar dari Azure Container Registry apa pun di grup sumber daya.
Parameter --acr-use-identity
dan --acr-identity
mengonfigurasi aplikasi web untuk menggunakan identitas terkelola yang ditetapkan sistem untuk menarik gambar dari Azure Container Registry.
Dibutuhkan beberapa menit agar aplikasi web dibuat. Anda dapat memeriksa log penyebaran dengan perintah az webapp log tail . Contohnya,az webapp log tail --resource-group web-app-simple-rg --name webappsimple123
. Jika Anda melihat entri dengan "pemanasan" di dalamnya, kontainer sedang disebarkan.
URL aplikasi web adalah <web-app-name>.azurewebsites.net
, misalnya, https://webappsimple123.azurewebsites.net
.
Setelah membuat perubahan kode, Anda dapat menyebarkan ulang ke App Service dengan perintah az acr build dan az webapp update .
Semua sumber daya Azure yang dibuat dalam tutorial ini berada dalam grup sumber daya yang sama. Menghapus grup sumber daya akan menghapus semua sumber daya dalam grup sumber daya dan merupakan cara tercepat untuk menghapus semua sumber daya Azure yang digunakan untuk aplikasi Anda.
Untuk menghapus sumber daya, gunakan perintah az group delete .
az group delete --name web-app-simple-rg
Anda juga dapat menghapus grup di portal Azure atau di Visual Studio Code dan Ekstensi Alat Azure.
Untuk informasi selengkapnya, lihat sumber daya berikut:
Acara
17 Mar, 21 - 21 Mar, 10
Bergabunglah dengan seri meetup untuk membangun solusi AI yang dapat diskalakan berdasarkan kasus penggunaan dunia nyata dengan sesama pengembang dan pakar.
Daftar sekarangPelatihan
Modul
Menyebarkan dan jalankan aplikasi web dalam kontainer dengan Azure App Service - Training
Temukan cara membuat gambar Docker dan menyimpannya di Azure Container Registry, lalu gunakan Azure App Service untuk menyebarkan aplikasi web yang didasarkan pada gambar tersebut.
Sertifikasi
Bersertifikat Microsoft: Azure Developer Associate - Certifications
Bangun solusi end-to-end di Microsoft Azure untuk membuat Azure Functions, menerapkan dan mengelola aplikasi web, mengembangkan solusi yang menggunakan penyimpanan Azure, dan banyak lagi.
Dokumentasi
Mulai Azure App Service dengan menyebarkan aplikasi Python pertama Anda ke Azure App Service.
Tutorial: Menyebarkan aplikasi web Python FastAPI dengan PostgreSQL - Azure App Service
Buat aplikasi web FastAPI dengan database PostgreSQL dan sebarkan ke Azure. Tutorial ini menggunakan kerangka kerja FastAPI dan aplikasi dihosting di Azure App Service di Linux.
Gambaran umum tentang cara membuat dan menyebarkan aplikasi web Python kontainer (Flask atau FastAPI) di Azure Container Apps.