Notatka
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ą w Pythonie wykorzystując Flask lub FastAPI i wdrożyć ją w Azure Container Apps. Azure Container Apps używa technologii kontenera Docker do hostowania zarówno wbudowanych obrazów, jak i obrazów niestandardowych. Aby uzyskać więcej informacji na temat używania kontenerów w Azure, zobacz Porównanie opcji kontenerów w Azure.
W tym samouczku użyjesz Docker CLI oraz Azure CLI, aby utworzyć obraz Docker i wdrożyć go w Azure Container Apps. Można również wdrożyć przy użyciu Visual Studio Code oraz rozszerzenia narzędzi Azure.
Wymagania wstępne
Do ukończenia tego samouczka potrzebne są następujące elementy:
Konto Azure, na którym można wdrożyć aplikację internetową w Azure Container Apps. Proces tworzy dla ciebie Azure Container Registry oraz przestrzeń roboczą Log Analytics.
Azure CLI, Docker oraz Docker CLI zainstalowane 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", "--config", "gunicorn.conf.py", "app:app"]
W tym przykładzie użyto 50505 portu kontenera (wewnętrznego), 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
Narzędzie Gunicorn można skonfigurować przy użyciu pliku gunicorn.conf.py . Gdy plik gunicorn.conf.py znajduje się w tym samym katalogu, w którym jest uruchamiany gunicornprogram , 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 konfiguracji konfiguruje narzędzie Gunicorn, aby zwiększyć liczbę pracowników na podstawie liczby dostępnych rdzeni 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
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
Otwórz http://localhost:5000 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 w Azure
Aby wdrożyć obraz platformy Docker w 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:
- Rejestr kontenerów Azure
- Środowisko aplikacji kontenerowych
- Aplikacja kontenerowa uruchamiająca obraz aplikacji webowej
- Obszar roboczy Log Analytics
Dane wyjściowe az containerapp up polecenia zawierają adres URL wdrożonej aplikacji. Otwórz adres URL w przeglądarce, aby wyświetlić aplikację internetową działającą w Azure. Adres URL wygląda następująco 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 ponownie uruchom poprzednie az containerapp up polecenie. Polecenie przebudowuje obraz i wdraża go ponownie do Azure Container Apps. Po ponownym uruchomieniu polecenia program wykryje, że grupa zasobów i aplikacja już istnieją, a następnie aktualizuje tylko aplikację kontenera.
W bardziej złożonych scenariuszach aktualizacji można skorzystać z poleceń az acr build i az containerapp update, aby zaktualizować aplikację kontenerową.
Czyszczenie
Wszystkie zasoby 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. Jest to najszybszy sposób usuwania wszystkich Azure zasobów używanych dla aplikacji.
Aby usunąć zasoby, użyj az group delete polecenia.
Możesz również usunąć grupę w portalu Azure lub w Visual Studio Code przy użyciu rozszerzenia narzędzi Azure.
Dalsze kroki
Aby uzyskać więcej informacji, zobacz następujące zasoby: