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:

Pobieranie przykładowego kodu

W środowisku lokalnym pobierz kod.

git clone https://github.com/Azure-Samples/msdocs-python-flask-webapp-quickstart.git

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 gunicornplik .

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.

docker build --tag flask-demo .

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 .

az group delete --name web-flask-aca-rg

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: