Baca dalam bahasa Inggris

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 Visual Studio Code dan Ekstensi Alat Azure.

Prasyarat

Untuk menyelesaikan tutorial ini, Anda perlu:

Mendapatkan kode sampel

Di lingkungan lokal Anda, dapatkan kodenya.

Bash
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 objek aplikasi.

Dockerfile
# 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.

Python
Flask==2.2.2
gunicorn
Werkzeug==2.2.2

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

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

Mengonfigurasi gunicorn

Gunicorn dapat dikonfigurasi dengan file gunicorn.conf.py . Saat file gunicorn.conf.py terletak di direktori yang sama tempat gunicorn dijalankan, 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 Konfigurasi gunicorn.

text
# 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

Membangun dan menjalankan gambar secara lokal

Buat gambar secara lokal.

Bash
docker build --tag flask-demo .

Jalankan gambar secara lokal dalam kontainer Docker.

Bash
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.

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.)

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

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

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

URL untuk aplikasi yang disebarkan berada dalam output az containerapp up perintah. Buka URL di browser Anda untuk melihat aplikasi web yang berjalan di Azure. Bentuk URL akan terlihat seperti berikut https://web-aca-app.<generated-text>.<location-info>.azurecontainerapps.io, di mana <generated-text> dan <location-info> unik untuk penyebaran Anda.

Membuat pembaruan dan menyebarkan ulang

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

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

Penghapusan

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 .

Azure CLI
az group delete --name web-flask-aca-rg

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

Langkah berikutnya

Untuk informasi selengkapnya, lihat sumber daya berikut: