Wdrażanie aplikacji internetowej platformy Flask lub FastAPI w usłudze Azure Container Apps
W tym samouczku pokazano, jak konteneryzować aplikację internetową Platformy Python Flask lub FastAPI i wdrożyć ją w usłudze Azure Container Apps. Usługa Azure Container Apps używa technologii kontenera platformy Docker do hostowania zarówno wbudowanych obrazów, jak i obrazów niestandardowych. Aby uzyskać więcej informacji na temat używania kontenerów na platformie Azure, zobacz Porównanie opcji kontenera platformy Azure.
W tym samouczku użyjesz interfejsu wiersza polecenia platformy Docker i interfejsu wiersza polecenia platformy Azure, aby utworzyć obraz platformy Docker i wdrożyć go w usłudze Azure Container Apps. Można również wdrożyć za pomocą programu Visual Studio Code i rozszerzenia narzędzi platformy Azure.
Wymagania wstępne
Do ukończenia tego samouczka niezbędne są następujące elementy:
Konto platformy Azure, na którym można wdrożyć aplikację internetową w usłudze Azure Container Apps. (An Usługa Azure Container Registry i obszar roboczy usługi Log Analytics są tworzone dla Ciebie w procesie).
Interfejs wiersza polecenia platformy Azure, platforma Docker i interfejs wiersza polecenia platformy Docker zainstalowany w środowisku lokalnym.
Pobieranie przykładowego kodu
W środowisku lokalnym pobierz kod.
Dodawanie plików Dockerfile i .dockerignore
Dodaj plik Dockerfile, aby poinstruować platformę Docker, jak skompilować obraz. Plik Dockerfile określa użycie narzędzia Gunicorn, serwera internetowego na poziomie produkcyjnym, który przekazuje żądania internetowe do platform Flask i FastAPI. Polecenia ENTRYPOINT i CMD instruują Gunicorn do obsługi żądań dla obiektu aplikacji.
# 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
jest używany dla portu kontenera (wewnętrznego) w tym przykładzie, ale można użyć dowolnego bezpłatnego portu.
Sprawdź plik requirements.txt, aby upewnić się, że zawiera gunicorn
plik .
Flask==2.2.2
gunicorn
Werkzeug==2.2.2
Dodaj plik .dockerignore, aby wykluczyć niepotrzebne pliki z obrazu.
.git*
**/*.pyc
.venv/
Konfigurowanie gunicorn
Gunicorn można skonfigurować za pomocą pliku gunicorn.conf.py . Gdy plik gunicorn.conf.py znajduje się w tym samym katalogu, w którym gunicorn
jest uruchamiany, nie musisz określać jego lokalizacji w ENTRYPOINT
pliku ani CMD
instrukcji pliku Dockerfile. Aby uzyskać więcej informacji na temat określania pliku konfiguracji, zobacz Ustawienia gunicorn.
W tym samouczku sugerowany plik konfiguracji konfiguruje platformę GUnicorn w celu zwiększenia liczby procesów roboczych na podstawie liczby dostępnych rdzeni procesora CPU. Aby uzyskać więcej informacji na temat ustawień gunicorn.conf.py plików, zobacz Konfiguracja serwera 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
Kompilowanie i uruchamianie obrazu lokalnie
Skompiluj obraz lokalnie.
Uruchom obraz lokalnie w kontenerze platformy Docker.
docker run --detach --publish 5000:50505 flask-demo
http://localhost:5000
Otwórz adres URL w przeglądarce, aby wyświetlić aplikację internetową uruchomioną lokalnie.
Opcja --detach
uruchamia kontener w tle. Opcja --publish
mapuje port kontenera na port na hoście. Port hosta (zewnętrzny) jest pierwszy w parze, a port kontenera (wewnętrzny) jest drugi. Aby uzyskać więcej informacji, zobacz Dokumentacja uruchamiania platformy Docker.
Wdrażanie aplikacji internetowej na platformie Azure
Aby wdrożyć obraz platformy Docker w usłudze Azure Container Apps, użyj polecenia az containerapp up . (Dla powłoki Bash są wyświetlane następujące polecenia. Zmień znak kontynuacji (\
) odpowiednio dla innych powłok.
az containerapp up \
--resource-group web-flask-aca-rg --name web-aca-app \
--ingress external --target-port 50505 --source .
Po zakończeniu wdrażania masz grupę zasobów z następującymi zasobami w niej:
- Usługa Azure Container Registry
- Środowisko aplikacji kontenera
- Aplikacja kontenera z uruchomionym obrazem aplikacji internetowej
- Obszar roboczy usługi Log Analytics
Adres URL wdrożonej aplikacji znajduje się w danych wyjściowych az containerapp up
polecenia . Otwórz adres URL w przeglądarce, aby wyświetlić aplikację internetową działającą na platformie Azure. Formularz adresu URL będzie wyglądać podobnie do poniższego https://web-aca-app.<generated-text>.<location-info>.azurecontainerapps.io
, gdzie element <generated-text>
i <location-info>
jest unikatowy dla danego wdrożenia.
Wprowadzanie aktualizacji i ponowne wdrażanie
Po wprowadzeniu aktualizacji kodu możesz ponownie uruchomić poprzednie az containerapp up
polecenie, co ponownie skompiluje obraz i ponownie wdroży go w usłudze Azure Container Apps. Ponowne uruchomienie polecenia uwzględnia, że grupa zasobów i aplikacja już istnieją, a następnie aktualizuje tylko aplikację kontenera.
W bardziej złożonych scenariuszach aktualizacji można ponownie wdrożyć za pomocą poleceń az acr build i az containerapp update w celu zaktualizowania aplikacji kontenera.
Czyszczenie
Wszystkie zasoby platformy Azure utworzone w tym samouczku znajdują się w tej samej grupie zasobów. Usunięcie grupy zasobów spowoduje usunięcie wszystkich zasobów w grupie zasobów i jest najszybszym sposobem usunięcia wszystkich zasobów platformy Azure używanych dla aplikacji.
Aby usunąć zasoby, użyj polecenia az group delete .
Możesz również usunąć grupę w witrynie Azure Portal lub w programie Visual Studio Code i rozszerzeniu narzędzi platformy Azure.
Następne kroki
Aby uzyskać więcej informacji, zobacz następujące zasoby: