Bagikan melalui


Menyebarkan aplikasi web Flask atau FastAPI di Azure Container Apps

Tutorial ini menunjukkan kepada Anda cara membuat kontainer aplikasi web Python Flask atau FastAPI dan menyebarkannya ke Azure Container Apps. Azure Container Apps menggunakan teknologi kontainer Docker untuk menghosting gambar bawaan dan gambar kustom. Untuk informasi selengkapnya tentang menggunakan kontainer di Azure, lihat Membandingkan opsi kontainer Azure.

Dalam tutorial ini, Anda menggunakan Docker CLI dan Azure CLI untuk membuat gambar Docker dan menyebarkannya ke Azure Container Apps. Anda juga dapat menyebarkan dengan menggunakan Visual Studio Code dan Azure Tools Extension.

Prasyarat

Untuk menyelesaikan tutorial ini, Anda memerlukan:

Dapatkan kode contoh

Di lingkungan lokal Anda, dapatkan kodenya.

git clone https://github.com/Azure-Samples/msdocs-python-flask-webapp-quickstart.git

Menambahkan file Dockerfile dan .dockerignore

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 untuk 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", "--config", "gunicorn.conf.py", "app:app"]

Contoh ini menggunakan 50505 untuk port kontainer (internal), tetapi Anda dapat menggunakan port gratis apa pun.

Periksa file requirements.txt untuk memastikan file berisi gunicorn.

Flask==3.1.0
gunicorn

Mengonfigurasi gunicorn

Anda dapat mengonfigurasi Gunicorn dengan menggunakan file gunicorn.conf.py . Saat file gunicorn.conf.py berada di direktori yang sama tempat Anda menjalankan gunicorn, Anda tidak perlu menentukan lokasinya dalam ENTRYPOINT atau CMD instruksi 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 bagian 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

Tambahkan file .dockerignore untuk mengecualikan file yang tidak perlu dari gambar.

.git*
**/*.pyc
.venv/

Membangun dan menjalankan gambar secara lokal

Buat gambar secara lokal.

docker build --tag flask-demo .

Jalankan gambar secara lokal dalam kontainer Docker.

docker run --detach --publish 5000:50505 flask-demo

Buka http://localhost:5000 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 Docker run.

Menyebarkan aplikasi web ke Azure

Untuk menyebarkan gambar Docker ke Azure Container Apps, gunakan perintah az containerapp up. (Perintah berikut ditampilkan untuk shell Bash. Ubah karakter kelanjutan (\) yang sesuai untuk shell lain.)

az containerapp up \
  --resource-group web-flask-aca-rg --name web-aca-app \
  --ingress external --target-port 50505 --source .

Setelah penyebaran selesai, Anda memiliki grup sumber daya dengan sumber daya berikut di dalamnya:

  • Azure Container Registry (Registry Kontainer Azure)
  • Lingkungan Aplikasi Kontainer
  • Aplikasi Kontainer yang menjalankan gambar aplikasi web
  • Ruang kerja Log Analytics

Output dari perintah az containerapp up mencakup URL untuk aplikasi yang disebarkan. Buka URL di browser Anda untuk melihat aplikasi web yang berjalan di Azure. URL terlihat seperti berikut https://web-aca-app.<generated-text>.<location-info>.azurecontainerapps.io, di mana <generated-text> dan <location-info> unik untuk implementasi Anda.

Membuat pembaruan dan menyebarkan ulang

Setelah Anda membuat pembaruan kode, jalankan perintah sebelumnya az containerapp up lagi. Perintah membangun kembali gambar dan menyebarkannya kembali ke Azure Container Apps. Saat Anda menjalankan perintah lagi, perintah mendeteksi bahwa grup sumber daya dan aplikasi sudah ada, dan hanya memperbarui aplikasi kontainer.

Dalam skenario pembaruan yang lebih kompleks, Anda dapat menyebarkan ulang dengan menggunakan perintah az acr build dan az containerapp update bersama-sama untuk memperbarui aplikasi kontainer.

Pembersihan

Semua sumber daya Azure yang Anda buat dalam tutorial ini berada dalam grup sumber daya yang sama. Menghapus grup sumber daya akan menghapus semua sumber daya dalam grup sumber daya. Ini adalah 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-flask-aca-rg

Anda juga dapat menghapus grup di portal Azure atau di Visual Studio Code dengan menggunakan Ekstensi Alat Azure.

Langkah selanjutnya

Untuk informasi selengkapnya, lihat sumber daya berikut ini: