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 bir Python Flask veya FastAPI web uygulamasını kapsayıcıya alma ve Azure Container Apps'ye dağıtma işlemleri 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 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şturacak ve bunu Azure Container Apps'e dağıtacaksınız. ayrıca Visual Studio Code ve Azure Araçları Uzantısı kullanarak da dağıtabilirsiniz.
Önkoşullar
Bu eğitimi tamamlamak için şunlara ihtiyacınız olacak:
web uygulamasını Azure Container Apps'a dağıtabileceğiniz bir Azure hesabı. (İşlem sizin için bir Azure Container Registry ve Log Analytics çalışma alanı oluşturur.)
Azure CLI, Docker ve yerel ortamınızda yüklü Docker CLI.
Ö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", "--config", "gunicorn.conf.py", "app:app"]
Bu örnekte 50505 kapsayıcı bağlantı noktası (iç) kullanılır, ancak herhangi bir ücretsiz bağlantı noktasını kullanabilirsiniz.
requirements.txt dosyasının gunicorn içerdiğinden emin olmak için dosyayı kontrol edin.
Flask==3.1.0
gunicorn
Gunicorn'u yapılandır
Gunicorn.conf.py dosyası kullanarak Gunicorn'ı yapılandırabilirsiniz.
gunicorn.conf.py dosyası çalıştırdığınız gunicorndizinde olduğ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 yerel olarak çalıştığını görmek için tarayıcınızda açın http://localhost:5000 .
--detach seçeneği, kapsayıcıyı arka planda çalıştırır. Seçenek --publish, kapsayıcı bağlantı noktasını konak üzerindeki bir bağlantı noktasına eşler. Ana bilgisayar bağlantı noktası (dış) çiftte ilk sıradadır, container bağlantı noktası (iç) ise ikinci sıradadır. Daha fazla bilgi için bkz Docker çalıştırma referansı.
web uygulamasını Azure dağıtma
Docker görüntüsünü Azure Container Apps 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:
- bir Azure Container Registry
- Kapsayıcı Uygulama Ortamı
- Web uygulaması görüntüsünü çalıştıran bir Kapsayıcı Uygulaması
- Log Analytics çalışma alanı
Komutun çıktısı az containerapp up , dağıtılan uygulamanın URL'sini içerir. web uygulamasının Azure çalıştığını görmek için tarayıcınızda URL'yi açın. URL aşağıdaki https://web-aca-app.<generated-text>.<location-info>.azurecontainerapps.io<generated-text><location-info> gibi görünür ve dağıtımınıza özeldir.
Güncelleştirmeler yapma ve yeniden dağıtma
Kod güncelleştirmeleri yaptıktan sonra önceki az containerapp up komutu yeniden çalıştırın. Komut, görüntüyü yeniden oluşturur ve Azure Container Apps'e yeniden dağıtır. Komutu yeniden çalıştırdığınızda, kaynak grubunun ve uygulamanın zaten var olduğunu algılar ve yalnızca kapsayıcı uygulamasını güncelleştirir.
Daha karmaşık güncelleştirme senaryolarında, kapsayıcı uygulamasını güncelleştirmek için az acr build ve az containerapp update komutlarını birlikte kullanarak yeniden dağıtabilirsiniz.
Temizleme
Bu öğreticide oluşturduğunuz tüm Azure kaynakları aynı kaynak grubunda yer alır. Kaynak grubunun kaldırılması, kaynak grubundaki tüm kaynakları kaldırır. 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ında veya Visual Studio CodeAzure Araçları Uzantısı kullanarak da kaldırabilirsiniz.
Sonraki Adımlar
Daha fazla bilgi için aşağıdaki kaynaklara bakın:
- az containerapp up komutuyla Deploy Azure Container Apps
- Hızlı Başlangıç: Visual Studio Code kullanarak Azure Container Apps'e dağıtım yapın
- Azure Container Apps, yönetilen kimlikle görüntü çekme işlemi