Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu öğreticide Python Flask veya FastAPI web uygulamasını kapsayıcılı hale getirmek ve Azure Container Apps'e dağıtmak gösterilmektedir. Azure Container Apps, hem yerleşik görüntüleri hem de özel görüntüleri barındırmak için Docker kapsayıcı teknolojisini kullanır. Azure'da kapsayıcıları kullanma hakkında daha fazla bilgi için bkz . Azure kapsayıcı seçeneklerini karşılaştırma.
Bu öğreticide Docker CLI ve Azure CLI kullanarak bir Docker görüntüsü oluşturup Azure Container Apps'e dağıtacaksınız. Visual Studio Code ve Azure Araçları Uzantısı ile de dağıtım yapabilirsiniz.
Önkoşullar
Bu eğitimi tamamlamak için şunlara ihtiyacınız olacak:
Bir web uygulamasını Azure Container Apps'e dağıtabileceğiniz bir Azure hesabı. (Bu süreçte sizin için bir Azure Container Registry ve Log Analytics çalışma alanı oluşturulur.)
Azure CLI, Docker ve docker CLI yerel ortamınızda yüklüdür.
Örnek kodunu alma
Yerel ortamınızda kodu alın.
Dockerfile ve .dockerignore dosyaları ekleme
Docker'a görüntünün nasıl derleneceğini bildirmek için bir Dockerfile ekleyin. Dockerfile, web isteklerini Flask ve FastAPI çerçevelerine ileten üretim düzeyinde bir web sunucusu olan Gunicorn'un kullanımını belirtir. ENTRYPOINT ve CMD komutları Gunicorn'a uygulama nesnesi isteklerini işlemesini sağlar.
# 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 bu örnekte kapsayıcı bağlantı noktası (iç) için kullanılır, ancak herhangi bir ücretsiz bağlantı noktasını kullanabilirsiniz.
requirements.txt dosyasının içerdiğinden gunicornemin olmak için dosyasını denetleyin.
Flask==3.1.0
gunicorn
Gunicorn yapılandırma
Gunicorn bir gunicorn.conf.py dosyasıyla yapılandırılabilir.
gunicorn.conf.py dosyası çalıştırıldığı gunicorn dizinde bulunduğunda, ENTRYPOINT dosyasında veya CMD yönergesinde konumunu belirtmeniz gerekmez. Yapılandırma dosyasını belirtme hakkında daha fazla bilgi için bkz . Gunicorn ayarları.
Bu öğreticide, önerilen yapılandırma dosyası GUnicorn'un çalışan sayısını kullanılabilir CPU çekirdeği sayısına göre artıracak şekilde yapılandırmaktadır. gunicorn.conf.py dosya ayarları hakkında daha fazla bilgi için bkz. Gunicorn yapılandırması.
# 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
Gereksiz dosyaları görüntüden dışlamak için bir .dockerignore dosyası ekleyin.
.git*
**/*.pyc
.venv/
Görüntüyü yerel olarak derleme ve çalıştırma
Görüntüyü yerel olarak oluşturun.
Görüntüyü yerel ortamdaki bir Docker kapsayıcısında çalıştırın.
docker run --detach --publish 5000:50505 flask-demo
Web uygulamasının http://localhost:5000 yerel olarak çalıştığını görmek için tarayıcınızda URL'yi açın.
seçeneği --detach kapsayıcıyı arka planda çalıştırır. seçeneği kapsayıcı --publish bağlantı noktasını konak üzerindeki bir bağlantı noktasına eşler. Konak bağlantı noktası (dış) çiftte ilk, kapsayıcı bağlantı noktası (iç) ise ikincidir. Daha fazla bilgi için bkz . Docker çalıştırma başvurusu.
Web uygulamasını Azure'a dağıtma
Docker görüntüsünü Azure Container Apps'e dağıtmak için az containerapp up komutunu kullanın. (Bash kabuğu için aşağıdaki komutlar verilmiştir. Devam karakterini (\) diğer kabuklar için uygun şekilde değiştirin.
az containerapp up \
--resource-group web-flask-aca-rg --name web-aca-app \
--ingress external --target-port 50505 --source .
Dağıtım tamamlandığında, içinde aşağıdaki kaynakları içeren bir kaynak grubunuz olur:
- Azure Konteyner Kaydı
- Kapsayıcı Uygulama Ortamı
- Web uygulaması görüntüsünü çalıştıran bir Kapsayıcı Uygulaması
- Log Analytics çalışma alanı
Dağıtılan uygulamanın URL'si komutun çıkışındadır az containerapp up . Web uygulamasının Azure'da çalıştığını görmek için URL'yi tarayıcınızda açın. URL'nin biçimi aşağıdaki https://web-aca-app.<generated-text>.<location-info>.azurecontainerapps.io<generated-text> gibi görünür ve burada dağıtımınıza <location-info> özeldir.
Güncelleştirmeler yapma ve yeniden dağıtma
Kod güncelleştirmeleri yaptıktan sonra önceki az containerapp up komutu yeniden çalıştırarak görüntüyü yeniden derleyebilir ve Azure Container Apps'e yeniden dağıtabilirsiniz. Komutu yeniden çalıştırmak, kaynak grubunun ve uygulamanın zaten var olduğunu hesaba ekler ve yalnızca kapsayıcı uygulamasını güncelleştirir.
Daha karmaşık güncelleştirme senaryolarında az acr build ve az containerapp update komutları ile birlikte yeniden dağıtarak kapsayıcı uygulamasını güncelleştirebilirsiniz.
Temizleme
Bu öğreticide oluşturulan tüm Azure kaynakları aynı kaynak grubunda yer alır. Kaynak grubunu kaldırmak, kaynak grubundaki tüm kaynakları kaldırır ve uygulamanız için kullanılan tüm Azure kaynaklarını kaldırmanın en hızlı yoludur.
Kaynakları kaldırmak için az group delete komutunu kullanın.
Grubu Azure portalından veya Visual Studio Code'da ve Azure Araçları Uzantısı'nda da kaldırabilirsiniz.
Sonraki Adımlar
Daha fazla bilgi için aşağıdaki kaynaklara bakın:
- az containerapp up komutuyla Azure Container Apps'i dağıtma
- Hızlı Başlangıç: Visual Studio Code kullanarak Azure Container Apps'e dağıtma
- Yönetilen kimlikle Azure Container Apps görüntü çekme