Kompilowanie i uruchamianie konteneryzowanej aplikacji internetowej w języku Python lokalnie przy użyciu bazy danych MongoDB

Ten artykuł jest częścią samouczka dotyczącego konteneryzowania i wdrażania konteneryzowanej aplikacji internetowej w języku Python w celu aplikacja systemu Azure Service. Usługa App Service umożliwia uruchamianie konteneryzowanych aplikacji internetowych i wdrażanie za pomocą funkcji ciągłej integracji/ciągłego wdrażania (CI/CD) za pomocą usług Docker Hub, Azure Container Registry i Visual Studio Team Services. W tej części samouczka dowiesz się, jak utworzyć i uruchomić konteneryzowaną aplikację internetową w języku Python lokalnie. Ten krok jest opcjonalny i nie jest wymagany do wdrożenia przykładowej aplikacji na platformie Azure.

Uruchamianie obrazu platformy Docker lokalnie w środowisku projektowym wymaga skonfigurowania poza wdrożeniem na platformie Azure. Pomyśl o tym jako inwestycję, która może ułatwić przyszłe cykle programowania, zwłaszcza gdy przejdziesz poza przykładowe aplikacje i zaczniesz tworzyć własne aplikacje internetowe. Aby wdrożyć przykładowe aplikacje dla platform Django i Flask, możesz pominąć ten krok i przejść do następnego kroku w tym samouczku. Zawsze możesz wrócić po wdrożeniu na platformie Azure i wykonać te kroki.

Poniższy diagram usługi przedstawia składniki omówione w tym artykule.

A screenshot of the Tutorial - Containerized Python App on Azure with local part highlighted.

1. Sklonuj lub pobierz przykładową aplikację

Sklonuj repozytorium:

# Django
git clone https://github.com/Azure-Samples/msdocs-python-django-container-web-app.git

# Flask
git clone https://github.com/Azure-Samples/msdocs-python-flask-container-web-app.git

Następnie przejdź do tego folderu:

# Django
cd msdocs-python-django-container-web-app

# Flask
cd msdocs-python-flask-container-web-app

2. Kompilowanie obrazu platformy Docker

Jeśli używasz jednej z przykładowych aplikacji platformy dostępnych dla platform Django i Flask, możesz przejść. Jeśli pracujesz z własną przykładową aplikacją, zobacz, jak skonfigurować przykładowe aplikacje, w szczególności plik Dockerfile w katalogu głównym.

Te instrukcje wymagają programu Visual Studio Code i rozszerzenia platformy Docker. Przejdź do folderu przykładowego sklonowanego lub pobranego i otwórz program VS Code za pomocą polecenia code ..

Uwaga

Kroki opisane w tej sekcji wymagają uruchomienia demona platformy Docker. W niektórych instalacjach, na przykład w systemie Windows, należy otworzyć program Docker Desktop, który uruchamia demona przed kontynuowaniem.

Instrukcje Zrzut ekranu
Otwórz rozszerzenie platformy Docker.

Jeśli rozszerzenie platformy Docker zgłasza błąd "Nie można nawiązać połączenia", upewnij się, że platforma Docker jest zainstalowana i uruchomiona. Jeśli po raz pierwszy pracujesz z platformą Docker, prawdopodobnie nie będziesz mieć żadnych kontenerów, obrazów ani połączonych rejestrów.
A screenshot showing how to open the Docker extension in Visual Studio Code.
Skompiluj obraz.
  • W Eksploratorze projektów przedstawiającym pliki projektu kliknij prawym przyciskiem myszy plik Dockerfile i wybierz polecenie Skompiluj obraz....

  • Alternatywnie możesz użyć palety poleceń (F1 lub Ctrl+Shift+P) i wpisać "Obrazy platformy Docker: Tworzenie obrazów", aby wywołać polecenie .

Aby uzyskać więcej informacji na temat składni pliku Dockerfile, zobacz dokumentację pliku Dockerfile.
A screenshot showing how to build the Docker image in Visual Studio Code.
Upewnij się, że obraz został skompilowany.
  • Przejdź do sekcji IMAGES rozszerzenia platformy Docker.

  • Poszukaj niedawno utworzonego obrazu. Nazwa obrazu kontenera to "msdocspythoncontainerwebapp", która jest ustawiona w pliku .vscode/tasks.json .

A screenshot showing how to confirm the built image in Visual Studio Code.

W tym momencie utworzono obraz lokalnie. Utworzony obraz ma nazwę "msdocspythoncontainerwebapp" i tag "latest". Tagi to sposób definiowania informacji o wersji, zamierzonego użycia, stabilności lub innych informacji. Aby uzyskać więcej informacji, zobacz Rekomendacje na potrzeby tagowania i przechowywania wersji obrazów kontenerów.

Obrazy utworzone na podstawie programu VS Code lub bezpośrednio przy użyciu interfejsu wiersza polecenia platformy Docker można również wyświetlać za pomocą aplikacji docker Desktop .

3. Konfigurowanie bazy danych MongoDB

Na potrzeby tego samouczka potrzebna jest baza danych MongoDB o nazwie restaurants_reviews i kolekcja o nazwie restaurants_reviews. W krokach w tej sekcji pokazano, jak utworzyć bazę danych i kolekcję przy użyciu lokalnej instalacji bazy danych MongoDB lub usługi Azure Cosmos DB dla bazy danych MongoDB .

Ważne

Nie używaj bazy danych MongoDB, której będziesz używać w środowisku produkcyjnym. W tym samouczku zapiszesz parametry połączenia bazy danych MongoDB w zmiennej środowiskowej. Dzięki temu każda osoba może sprawdzić kontener (na przykład przy użyciu metody docker inspect).

Krok 1. Zainstaluj bazę danych MongoDB , jeśli jeszcze nie jest.

Możesz sprawdzić instalację bazy danych MongoDB przy użyciu powłoki MongoDB (mongosh).

  • Następujące polecenie wprowadza powłokę i udostępnia wersję zarówno serwera mongosh, jak i mongoDB zainstalowanego w systemie:

    mongosh
    
  • Następujące polecenie udostępnia tylko wersję serwera MongoDB zainstalowaną w systemie:

    mongosh --quiet --exec 'db.version()'
    

Jeśli te polecenia nie działają, może być konieczne jawne zainstalowanie protokołu mongosh lub nawiązanie połączenia z serwerem MongoDB.

Alternatywą w niektórych instalacjach jest bezpośrednie wywołanie demona Mongo.

mongod --version

Krok 2. Edytowanie pliku mongod.cfg w celu dodania adresu IP komputera.

Plik konfiguracji mongod ma bindIp klucz, który definiuje nazwy hostów i adresy IP, na których baza MongoDB nasłuchuje połączeń klienta. Dodaj bieżący adres IP lokalnego komputera programistycznego. Przykładowa aplikacja uruchomiona lokalnie w kontenerze platformy Docker komunikuje się z maszyną hosta przy użyciu tego adresu.

Na przykład część pliku konfiguracji powinna wyglądać następująco:

net:
  port: 27017
  bindIp: 127.0.0.1,<local-ip-address>

Uruchom ponownie bazę danych MongoDB, aby pobrać zmiany w pliku konfiguracji.

Krok 3. Tworzenie bazy danych i kolekcji w lokalnej bazie danych MongoDB.

Ustaw nazwę bazy danych na "restaurants_reviews" i nazwę kolekcji na "restaurants_reviews". Bazę danych i kolekcję można utworzyć za pomocą rozszerzenia MongoDB programu VS Code, powłoki MongoDB (mongosh) lub dowolnego innego narzędzia obsługującego bazę danych MondoDB.

W przypadku powłoki bazy danych MongoDB poniżej przedstawiono przykładowe polecenia służące do tworzenia bazy danych i kolekcji:

> help
> use restaurants_reviews
> db.restaurants_reviews.insertOne({})
> show dbs
> exit

W tym momencie lokalna parametry połączenia mongoDB to "mongodb://127.0.0.1:27017/", nazwa bazy danych to "restaurants_reviews", a nazwa kolekcji to "restaurants_reviews".

4. Uruchamianie obrazu lokalnie w kontenerze

Dzięki informacjom na temat nawiązywania połączenia z bazą danych MongoDB możesz uruchomić kontener lokalnie. Przykładowa aplikacja oczekuje przekazania informacji o połączeniu z bazą danych MongoDB w zmiennych środowiskowych. Istnieje kilka sposobów przekazywania zmiennych środowiskowych do kontenera lokalnie. Każda z nich ma zalety i wady pod względem bezpieczeństwa. Należy unikać ewidencjonowania poufnych informacji lub pozostawiania poufnych informacji w kodzie w kontenerze.

Uwaga

Po wdrożeniu na platformie Azure aplikacja internetowa będzie pobierać informacje o połączeniu z wartości środowiska ustawionych jako ustawienia konfiguracji usługi App Service i żadne modyfikacje scenariusza lokalnego środowiska deweloperskiego nie mają zastosowania.

Instrukcje Zrzut ekranu
W folderze .vscode przykładowej aplikacji plik settings.json definiuje, co się stanie, gdy używasz rozszerzenia platformy Docker, a następnie wybierz polecenie Uruchom lub Uruchom interakcyjne z menu kontekstowego tagu. Plik settings.json zawiera dwa szablony dla scenariuszy (MongoDB local) i (MongoDB Azure) .

Jeśli używasz lokalnej bazy danych MongoDB:
  • Zastąp oba wystąpienia <YOUR_IP_ADDRESS> adresem IP.

  • Zastąp oba wystąpienia <CONNECTION_STRING> parametry połączenia dla bazy danych MongoDB.

Jeśli używasz bazy danych Usługi Azure Cosmos DB dla bazy danych MongoDB:
  • Zastąp oba wystąpienia usługą <CONNECTION_STRING> Azure Cosmos DB for MongoDB parametry połączenia.
docker.dockerPath Ustaw ustawienie konfiguracji używane przez szablony. Aby ustawić docker.dockerPath, otwórz paletę poleceń programu VS Code (Ctrl+Shift+P), wprowadź ciąg "Preferencje: Otwórz Ustawienia obszaru roboczego", a następnie wprowadź ciąg "docker.dockerPath" w polu Ustawienia wyszukiwania. Wprowadź wartość "docker" (bez cudzysłowów).

Uwaga

Przyjmuje się, że zarówno nazwa bazy danych, jak i nazwa kolekcji to restaurants_reviews.

A screenshot showing the settings.json file Visual Studio Code.
Uruchom obraz.
  • W sekcji IMAGES rozszerzenia platformy Docker znajdź utworzony obraz.

  • Rozwiń obraz, aby znaleźć najnowszy tag, kliknij prawym przyciskiem myszy i wybierz polecenie Uruchom interakcyjne.

  • Zostanie wyświetlony monit o wybranie zadania odpowiedniego dla danego scenariusza : "Interaktywna konfiguracja uruchamiania (lokalna baza danych MongoDB)" lub "Interaktywna konfiguracja uruchamiania (MongoDB Azure)".

Po uruchomieniu interaktywnym zobaczysz wszystkie instrukcje drukowania w kodzie, które mogą być przydatne do debugowania. Możesz również wybrać pozycję Uruchom , która nie jest interaktywna i nie przechowuje standardowych danych wejściowych.

Ważne

Ten krok kończy się niepowodzeniem, jeśli domyślny profil terminalu jest ustawiony na wiersz polecenia (Windows). Aby zmienić profil domyślny, otwórz paletę poleceń programu VS Code (Ctrl+Shift+P), wprowadź ciąg "Terminal: wybierz profil domyślny", a następnie wybierz inny profil z menu rozwijanego, na przykład Git Bash lub PowerShell.

A screenshot showing how to run a Docker container in Visual Studio Code.
Upewnij się, że kontener jest uruchomiony.
  • W sekcji KONTENERY rozszerzenia platformy Docker znajdź kontener.

  • Rozwiń węzeł Pojedyncze kontenery i upewnij się, że aplikacja "msdocspythoncontainerwebapp" jest uruchomiona. Jeśli jest uruchomiony, obok nazwy kontenera powinien zostać wyświetlony zielony symbol trójkąta.

A screenshot showing how to confirm a Docker container is running in Visual Studio Code.
Przetestuj aplikację internetową, klikając prawym przyciskiem myszy nazwę kontenera i wybierając polecenie Otwórz w przeglądarce.

Przeglądarka zostanie otwarta w domyślnej przeglądarce jako "http://127.0.0.1:8000" dla Django lub "http://127.0.0.1:5000/" dla platformy Flask.
A screenshot showing how to browse the endpoint of a Docker container in Visual Studio Code.
Zatrzymaj kontener.
  • W sekcji CONTAINERS rozszerzenia platformy Docker znajdź uruchomiony kontener.

  • Kliknij prawym przyciskiem myszy kontener i wybierz polecenie Zatrzymaj.

A screenshot showing how to stop a running Docker container in Visual Studio Code.

Napiwek

Możesz również uruchomić kontener, wybierając konfigurację przebiegu lub debugowania. Zadania rozszerzenia platformy Docker w pliku tasks.json są wywoływane podczas uruchamiania lub debugowania. Zadanie o nazwie zależy od wybranej konfiguracji uruchamiania. W przypadku zadania "Docker: Python (mongoDB local)" określ <YOUR-IP-ADDRESS>. W przypadku zadania "Docker: Python (MongoDB Azure)" określ <parametry> POŁĄCZENIA.

Kontener można również uruchomić z obrazu i zatrzymać go za pomocą aplikacji docker Desktop .

Następny krok