Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym samouczku pokazano, jak konteneryzować aplikację webową 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 potrzebne są następujące elementy:
Konto platformy Azure, na którym można wdrożyć aplikację internetową w usłudze Azure Container Apps. (W procesie tworzone są Azure Container Registry i obszar roboczy Log Analytics dla Ciebie).
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 Dockerfile, aby poinstruować Docker, jak zbudować 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
.
Flask==3.1.0
gunicorn
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
instrukcji lub CMD
pliku Dockerfile. Aby uzyskać więcej informacji na temat określania pliku konfiguracji, zobacz Ustawienia Gunicorn.
W tym samouczku sugerowany plik konfiguracyjny ustawia platformę GUnicorn, aby zwiększyć liczbę pracowników na podstawie liczby dostępnych rdzeni procesora. 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
Dodaj plik .dockerignore, aby wykluczyć niepotrzebne pliki z obrazu.
.git*
**/*.pyc
.venv/
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 . (Następujące polecenia są wyświetlane dla powłoki Bash. 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 kontenerowych
- Aplikacja kontenerowa uruchamiająca obraz aplikacji webowej
- 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 kontenerowej aplikacji.
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 az group delete polecenia.
Możesz również usunąć grupę w witrynie Azure Portal lub w programie Visual Studio Code i rozszerzeniu narzędzi platformy Azure.
Dalsze kroki
Aby uzyskać więcej informacji, zobacz następujące zasoby: