Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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 memerlukan:
Akun Azure tempat Anda dapat menyebarkan aplikasi web ke Azure Container Apps. (Dalam proses ini, sebuah Azure Container Registry dan sebuah ruang kerja Log Analytics dibuat untuk Anda.)
Azure CLI, Docker, dan Docker CLI diinstal di lingkungan lokal Anda.
Dapatkan kode contoh
Di lingkungan lokal Anda, dapatkan kodenya.
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.
# 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
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 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.
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 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 .
Saat penyebaran selesai, Anda memiliki grup sumber daya dengan sumber daya berikut di dalamnya:
- Sebuah 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 implementasi 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.
Pembersihan
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 .
Anda juga dapat menghapus grup di portal Azure atau di Visual Studio Code dan Ekstensi Alat Azure.
Langkah selanjutnya
Untuk informasi selengkapnya, lihat sumber daya berikut ini: