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 menggunakan Visual Studio Code dan Azure Tools Extension.
Prasyarat
Untuk menyelesaikan tutorial ini, Anda memerlukan:
Akun Azure tempat Anda dapat menyebarkan aplikasi web ke Azure Container Apps. (Proses membuat Azure Container Registry dan ruang kerja Log Analytics 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 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.
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 .
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: