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 artykule wyjaśniono, jak zastosować projekt w języku Python, taki jak aplikacja internetowa, i wdrożyć go jako kontener platformy Docker na platformie Azure. Obejmuje on ogólny przepływ pracy konteneryzacji, opcje wdrażania platformy Azure dla kontenerów i konfiguracje kontenerów specyficzne dla języka Python na platformie Azure. Kompilowanie i wdrażanie kontenerów platformy Docker na platformie Azure jest zgodne ze standardowym procesem w różnych językach z konfiguracjami specyficznymi dla języka Python w pliku Dockerfile, requirements.txti ustawieniami struktur internetowych, takich jak Django, Flask i FastAPI.
Scenariusze przepływu pracy kontenera
W przypadku tworzenia kontenerów języka Python niektóre typowe przepływy pracy służące do przechodzenia z kodu do kontenera zostały omówione w poniższej tabeli.
Scenariusz | Opis | Przepływ pracy |
---|---|---|
Dev | Buduj obrazy Dockera w języku Python lokalnie w swoim środowisku deweloperskim. |
Kod: Sklonuj kod aplikacji lokalnie przy użyciu narzędzia Git (z zainstalowaną platformą Docker). Kompilacja: użyj interfejsu wiersza polecenia platformy Docker, programu VS Code (z rozszerzeniami), PyCharm (z wtyczką platformy Docker). Opisano w sekcji Praca z obrazami i kontenerami platformy Docker w języku Python. Test: uruchom i przetestuj kontener lokalnie. Wypchnij: Wypchnij obraz do Rejestru Kontenerów, takiego jak Azure Container Registry, Docker Hub lub rejestr prywatny. Wdrażanie: wdróż kontener z rejestru w usłudze platformy Azure. |
Hybryda | Twórz obrazy platformy Docker na platformie Azure, ale inicjuj proces ze środowiska lokalnego. |
Kod: Sklonuj kod lokalnie (nie trzeba instalować platformy Docker). Kompilacja: aby wyzwolić kompilacje na platformie Azure, użyj programu VS Code (z rozszerzeniami zdalnymi) lub interfejsu wiersza polecenia platformy Azure. Push: Wypchnięcie wbudowanego obrazu do usługi Azure Container Registry. Wdrażanie: wdróż kontener z rejestru w usłudze platformy Azure. |
Błękit | Tworzenie i wdrażanie kontenerów w całości w chmurze przy użyciu usługi Azure Cloud Shell. |
Kod: Sklonuj repozytorium GitHub w usłudze Azure Cloud Shell. Kompilacja: użyj interfejsu wiersza polecenia platformy Azure lub interfejsu wiersza polecenia platformy Docker w usłudze Cloud Shell. Wypychanie: wypychanie obrazu do rejestru, takiego jak Azure Container Registry, Docker Hub lub rejestr prywatny. Wdrażanie: wdróż kontener z rejestru w usłudze platformy Azure. |
Celem końcowym tych przepływów pracy jest posiadanie kontenera uruchomionego w jednym z zasobów platformy Azure obsługujących kontenery platformy Docker, jak pokazano w następnej sekcji.
Środowisko deweloperskie może być następujące:
- Lokalna stacja robocza z programem Visual Studio Code lub PyCharm
- Codespaces (środowisko projektowe hostowane w chmurze)
- Visual Studio Dev Containers (kontener jako środowisko programistyczne)
Opcje wdrażania kontenerów na platformie Azure
Aplikacje kontenera języka Python są obsługiwane w następujących usługach.
Usługa | Opis |
---|---|
Aplikacja internetowa dla kontenerów | Usługa Azure App Service to w pełni zarządzana platforma hostingu dla konteneryzowanych aplikacji internetowych, w tym witryn internetowych i internetowych interfejsów API. Obsługuje skalowalne wdrożenia i bezproblemowo integruje się z przepływem pracy CI/CD przy użyciu Docker Hub, Rejestru Kontenerów Azure i GitHub. Ta usługa jest idealna dla deweloperów, którzy chcą prostej i wydajnej ścieżki do wdrażania konteneryzowanych aplikacji, a jednocześnie korzystają z pełnych możliwości platformy Azure App Service. Pakując aplikację i wszystkie jej zależności w jeden kontener, który można wdrożyć, zyskujesz zarówno przenośność, jak i łatwość zarządzania — bez konieczności zarządzania infrastrukturą.
Przykład: wdrażanie aplikacji internetowej platformy Flask lub FastPI w usłudze Azure App Service. |
Azure Container Apps (ACA) | Azure Container Apps (ACA) to w pełni zarządzana bezserwerowa usługa kontenera obsługiwana przez platformę Kubernetes i technologie open source, takie jak Dapr, KEDA i wysłannik. Jego projekt obejmuje najlepsze rozwiązania branżowe i jest zoptymalizowany pod kątem wykonywania kontenerów ogólnego przeznaczenia. Usługa ACA oddziela złożoność zarządzania infrastrukturą Kubernetes — bezpośredni dostęp do interfejsu API Kubernetes nie jest wymagany ani obsługiwany. Zamiast tego oferuje konstrukcje aplikacji wyższego poziomu, takie jak poprawki, skalowanie, certyfikaty i środowiska, aby uprościć przepływy pracy tworzenia i wdrażania. Ta usługa jest idealna dla zespołów programistycznych, którzy chcą tworzyć i wdrażać konteneryzowane mikrousługi z minimalnym obciążeniem operacyjnym, co pozwala im skupić się na logice aplikacji zamiast zarządzania infrastrukturą. Przykład: wdrażanie aplikacji internetowej platformy Flask lub FastPI w usłudze Azure Container Apps. |
Azure Container Instances (ACI) | Usługa Azure Container Instances (ACI) to bezserwerowa oferta, która udostępnia jedną grupę Hyper-V izolowanych kontenerów na żądanie. Rozliczenia są oparte na rzeczywistym zużyciu zasobów, a nie wstępnie przydzielonej infrastrukturze, dzięki czemu są dobrze dostosowane do obciążeń krótkotrwałych lub z możliwością wzrostu. W przeciwieństwie do innych usług kontenerów usługa ACI nie obejmuje wbudowanej obsługi pojęć, takich jak skalowanie, równoważenie obciążenia lub certyfikaty TLS. Zamiast tego zazwyczaj działa jako podstawowy blok konstrukcyjny kontenera, często zintegrowany z usługami platformy Azure, takimi jak Azure Kubernetes Service (AKS) na potrzeby orkiestracji. Usługa ACI wyróżnia się jako lekki wybór, gdy abstrakcji i funkcji usługi Azure Container Apps wyższego poziomu nie są potrzebne Przykład: Tworzenie obrazu kontenera do wdrożenia w usłudze Azure Container Instances. (Samouczek nie jest specyficzny dla języka Python, ale przedstawione pojęcia dotyczą wszystkich języków). |
Azure Kubernetes Service (AKS) | Usługa Azure Kubernetes Service (AKS) to w pełni zarządzana opcja kubernetes na platformie Azure, która zapewnia pełną kontrolę nad środowiskiem Kubernetes. Obsługuje on bezpośredni dostęp do interfejsu API platformy Kubernetes i może uruchamiać dowolne standardowe obciążenie Kubernetes. Pełny klaster znajduje się w twojej subskrypcji, a jego konfiguracje i operacje są w twojej kontroli i odpowiedzialności. Usługa ACI jest idealna dla zespołów poszukujących w pełni zarządzanego rozwiązania kontenera, a usługa AKS zapewnia pełną kontrolę nad klastrem Kubernetes, co wymaga zarządzania konfiguracjami, siecią, skalowaniem i operacjami. Azure zarządza płaszczyzną sterowania i aprowizacją infrastruktury, ale codzienne działanie i bezpieczeństwo klastra są w rękach twojego zespołu. Ta usługa jest idealna dla zespołów, które chcą elastyczności i możliwości platformy Kubernetes z dodatkową korzyścią dla zarządzanej infrastruktury platformy Azure, zachowując jednocześnie pełną własność środowiska klastra.
Przykład: wdrażanie klastra usługi Azure Kubernetes Service przy użyciu interfejsu wiersza polecenia platformy Azure. |
Azure Functions | Usługa Azure Functions oferuje opartą na zdarzeniach bezserwerową platformę Functions jako usługa (FaaS), która umożliwia uruchamianie małych fragmentów kodu (funkcji) w odpowiedzi na zdarzenia — bez zarządzania infrastrukturą. Usługa Azure Functions udostępnia wiele cech usługi Azure Container Apps w zakresie skalowania i integracji ze zdarzeniami, ale jest zoptymalizowana pod kątem krótkoterminowych funkcji wdrożonych jako kod lub kontenery. dla zespołów, które chcą uruchamiać wykonywanie funkcji w odpowiedzi na zdarzenia; na przykład, aby połączyć się z innymi źródłami danych. Podobnie jak usługa Azure Container Apps, usługa Azure Functions obsługuje automatyczne skalowanie i integrację ze źródłami zdarzeń (na przykład żądania HTTP, kolejki wiadomości lub aktualizacje magazynu blob). Ta usługa jest idealna w przypadku zespołów tworzących lekkie, wyzwalane przez zdarzenia przepływy pracy, takie jak przetwarzanie przekazywania plików lub reagowanie na zmiany bazy danych, w języku Python lub w innych językach.
Przykład: tworzenie funkcji w systemie Linux przy użyciu kontenera niestandardowego. |
Aby uzyskać bardziej szczegółowe porównanie tych usług, zobacz Porównanie aplikacji kontenera z innymi opcjami kontenera platformy Azure.
Środowiska wirtualne i kontenery
Środowiska wirtualne w języku Python izolują zależności projektu od instalacji języka Python na poziomie systemu, zapewniając spójność w środowiskach developerskich. Środowisko wirtualne zawiera własny izolowany interpreter języka Python wraz z bibliotekami i skryptami wymaganymi do uruchomienia określonego kodu projektu w tym środowisku. Zależności dla projektów języka Python są zarządzane za pośrednictwem pliku requirements.txt . Określając zależności w pliku requirements.txt , deweloperzy mogą odtworzyć dokładne środowisko potrzebne do ich projektu. Takie podejście ułatwia bezproblemowe przechodzenie do konteneryzowanych wdrożeń, takich jak usługa Azure App Service, gdzie spójność środowiska jest niezbędna do zapewnienia niezawodnej wydajności aplikacji.
Wskazówka
W konteneryzowanych projektach języka Python środowiska wirtualne są zwykle niepotrzebne, ponieważ kontenery platformy Docker zapewniają izolowane środowiska z własnym interpreterem i zależnościami języka Python. Można jednak używać środowisk wirtualnych do lokalnego programowania lub testowania. Aby obrazy Dockera były odchudzone, wyklucz środowiska wirtualne za pomocą pliku .dockerignore, który uniemożliwia kopiowanie niepotrzebnych plików do obrazu.
Kontenery platformy Docker można traktować jako funkcje podobne do środowisk wirtualnych języka Python, ale z szerszymi zaletami w zakresie powtarzalności, izolacji i przenośności. W przeciwieństwie do środowisk wirtualnych kontenery platformy Docker mogą działać spójnie w różnych systemach operacyjnych i środowiskach, o ile środowisko uruchomieniowe kontenera jest dostępne.
Kontener platformy Docker zawiera kod projektu w języku Python wraz ze wszystkim, czego potrzebuje do uruchomienia, takimi jak zależności, ustawienia środowiska i biblioteki systemowe. Aby utworzyć kontener, najpierw zbuduj obraz Docker na podstawie kodu i konfiguracji projektu, a następnie uruchom kontener, który jest działającym wystąpieniem tego obrazu.
W przypadku konteneryzacji projektów języka Python pliki kluczy są opisane w poniższej tabeli:
Plik projektu | Opis |
---|---|
requirements.txt | Ten plik zawiera ostateczną listę zależności języka Python potrzebnych dla aplikacji. Platforma Docker używa tej listy podczas procesu kompilacji obrazu do zainstalowania wszystkich wymaganych pakietów. Zapewnia to spójność między środowiskami programowania i wdrażania. |
Plik Dockerfile | Ten plik zawiera instrukcje dotyczące tworzenia obrazu platformy Docker w języku Python, w tym wyboru obrazu podstawowego, instalacji zależności, kopiowania kodu i poleceń uruchamiania kontenera. Definiuje kompletne środowisko wykonywania aplikacji. Aby uzyskać więcej informacji, zobacz sekcję Instrukcje dotyczące pliku Dockerfile dla języka Python. |
.dockerignore | Ten plik określa pliki i katalogi, które należy wykluczyć podczas kopiowania zawartości do obrazu Docker poleceniem COPY w pliku Dockerfile. Ten plik używa wzorców podobnych do .gitignore do definiowania wykluczeń. Plik .dockerignore obsługuje wzorce wykluczeń podobne do plików gitignore . Aby uzyskać więcej informacji, zobacz plik .dockerignore. Wykluczanie plików pomaga w wydajności kompilacji obrazu, ale należy również użyć go, aby uniknąć dodawania poufnych informacji do obrazu, gdzie można go sprawdzić. Na przykład plik .dockerignore powinien zawierać wiersze, aby ignorować .env i .venv (środowiska wirtualne). |
Ustawienia kontenera dla platform internetowych
Struktury sieci Web zwykle wiążą się z domyślnymi portami (takimi jak 5000 dla platformy Flask, 8000 dla interfejsu FastAPI). Podczas wdrażania kontenerów w usługach platformy Azure, takich jak Azure Container Instances, Azure Kubernetes Service (AKS) lub App Service for Containers, ważne jest, aby jawnie uwidocznić i skonfigurować port nasłuchiwania kontenera w celu zapewnienia prawidłowego routingu ruchu przychodzącego. Skonfigurowanie poprawnego portu gwarantuje, że infrastruktura platformy Azure może kierować żądania do poprawnego punktu końcowego wewnątrz kontenera.
Struktura sieci Web | Port |
---|---|
Django | osiem tysięcy |
Kolba | 5000 lub 5002 |
FastAPI (uvicorn) | 8000 lub 80 |
W poniższej tabeli przedstawiono sposób ustawiania portu dla różnych rozwiązań kontenera platformy Azure.
Rozwiązanie kontenera platformy Azure | Jak ustawić port aplikacji internetowej |
---|---|
Aplikacja webowa dla kontenerów | Domyślnie App Service zakłada, że niestandardowy kontener nasłuchuje na porcie 80 lub 8080. Jeśli kontener nasłuchuje innego portu, ustaw WEBSITES_PORT ustawienie aplikacji w aplikacji usługi App Service. Aby uzyskać więcej informacji, zobacz Konfigurowanie niestandardowego kontenera dla usługi Azure App Service. |
Aplikacje kontenerowe Azure | Usługa Azure Container Apps umożliwia udostępnianie aplikacji kontenera publicznej sieci web, sieci wirtualnej lub innym aplikacjom kontenera w tym samym środowisku przez włączenie ruchu przychodzącego. Ustaw dojście targetPort na port, na którym kontener nasłuchuje żądań przychodzących. Punkt końcowy wejścia aplikacji jest zawsze udostępniony na porcie 443. Aby uzyskać więcej informacji, zobacz Konfigurowanie ingresu HTTPS lub TCP w usłudze Azure Container Apps. |
Azure Container Instances, Azure Kubernetes | Definiujesz port, na którym aplikacja nasłuchuje, podczas tworzenia kontenera lub podu. Obraz kontenera powinien zawierać strukturę internetową, serwer aplikacji (na przykład gunicorn, uvicorn) i opcjonalnie serwer internetowy (na przykład nginx). W bardziej złożonych scenariuszach można podzielić obowiązki między dwa kontenery — jeden dla serwera aplikacji, a drugi dla serwera internetowego. W takim przypadku kontener serwera internetowego zwykle uwidacznia porty 80 lub 443 dla ruchu zewnętrznego. |
Python Dockerfile
Plik Dockerfile to plik tekstowy zawierający instrukcje dotyczące tworzenia obrazu platformy Docker dla aplikacji w języku Python. Pierwsza instrukcja zwykle określa obraz podstawowy do rozpoczęcia od. Kolejne instrukcje zawierają szczegółowe instrukcje, takie jak instalowanie niezbędnego oprogramowania, kopiowanie plików aplikacji i konfigurowanie środowiska w celu utworzenia obrazu możliwego do uruchomienia. Poniższa tabela zawiera przykłady specyficzne dla języka Python dla często używanych instrukcji dotyczących pliku Dockerfile.
Instrukcja | Przeznaczenie | Przykład |
---|---|---|
Z | Ustawia obraz podstawowy na potrzeby kolejnych instrukcji. | FROM python:3.8-slim |
WYSTAWIAĆ | Informuje platformę Docker, że kontener nasłuchuje określonego portu podczas działania. | EXPOSE 5000 |
KOPIOWAĆ | Kopiuje pliki lub katalogi z określonego źródła i dodaje je do systemu plików kontenera w określonej ścieżce docelowej. | COPY . /app |
BIEGAĆ | Uruchamia polecenie wewnątrz obrazu platformy Docker. Na przykład ściąganie zależności. Polecenie jest uruchamiane raz w czasie kompilacji. | RUN python -m pip install -r requirements.txt |
CMD | Polecenie udostępnia wartość domyślną do uruchomienia kontenera. Może istnieć tylko jedna instrukcja CMD. | CMD ["gunicorn", "--bind", "0.0.0.0:5000", "wsgi:app"] |
Polecenie kompilacji platformy Docker kompiluje obrazy platformy Docker z pliku Dockerfile i kontekstu. Kontekst kompilacji to zestaw plików znajdujących się w określonej ścieżce lub adresie URL. Zazwyczaj tworzy się obraz z katalogu głównego projektu języka Python, a ścieżka polecenia kompilacji to "." jak pokazano w poniższym przykładzie.
docker build --rm --pull --file "Dockerfile" --tag "mywebapp:latest" .
Proces kompilacji może odwoływać się do dowolnego pliku w kontekście. Na przykład kompilacja może użyć instrukcji COPY, aby odwołać się do pliku w kontekście. Oto przykład pliku Dockerfile dla projektu języka Python przy użyciu platformy Flask :
FROM python:3.8-slim
EXPOSE 5000
# Keeps Python from generating .pyc files in the container.
ENV PYTHONDONTWRITEBYTECODE=1
# Turns off buffering for easier container logging
ENV PYTHONUNBUFFERED=1
# Install pip requirements.
COPY requirements.txt .
RUN python -m pip install -r requirements.txt
WORKDIR /app
COPY . /app
# Creates a non-root user with an explicit UID and adds permission to access the /app folder.
RUN adduser -u 5678 --disabled-password --gecos "" appuser && chown -R appuser /app
USER appuser
# Provides defaults for an executing container; can be overridden with Docker CLI.
CMD ["gunicorn", "--bind", "0.0.0.0:5000", "wsgi:app"]
Plik Dockerfile można utworzyć ręcznie lub utworzyć go automatycznie za pomocą programu VS Code i rozszerzenia platformy Docker. Aby uzyskać więcej informacji, zobacz Generowanie plików platformy Docker.
Polecenie kompilacji platformy Docker jest częścią interfejsu wiersza polecenia platformy Docker. W przypadku używania środowisk IDE, takich jak VS Code lub PyCharm, polecenia interfejsu użytkownika do pracy z obrazami Dockera wywołają polecenie kompilacji i automatyzują określanie opcji.
Praca z obrazami i kontenerami platformy Docker w języku Python
VS Code i PyCharm
Zintegrowane środowiska programistyczne (IDE), takie jak Visual Studio Code (VS Code) i PyCharm, usprawniają tworzenie kontenerów języka Python, integrując zadania platformy Docker z przepływem pracy. W przypadku rozszerzeń lub wtyczek te środowiska IDE upraszczają tworzenie obrazów platformy Docker, uruchamianie kontenerów i wdrażanie w usługach platformy Azure, takich jak App Service lub Container Instances. Poniżej przedstawiono niektóre czynności, które można wykonać za pomocą programu VS Code i narzędzia PyCharm.
Pobierz i skompiluj obrazy platformy Docker.
- Tworzenie obrazów w środowisku deweloperskim.
- Tworzenie obrazów Docker na platformie Azure bez zainstalowanego Dockera w środowisku deweloperskim. (W przypadku narzędzia PyCharm użyj interfejsu wiersza polecenia platformy Azure do kompilowania obrazów na platformie Azure).
Utwórz i uruchom kontenery platformy Docker na podstawie istniejącego obrazu, ściągniętego obrazu lub bezpośrednio z pliku Dockerfile.
Uruchamianie aplikacji wielokontenerowych za pomocą narzędzia Docker Compose.
Łącz się i pracuj z rejestrami kontenerów, takimi jak Docker Hub, GitLab, JetBrains Space, Docker V2 oraz inne samo-hostowane rejestry Docker.
(Tylko program VS Code) Dodaj pliki Dockerfile i Docker compose dostosowane do projektu języka Python.
Aby skonfigurować program VS Code i narzędzie PyCharm do uruchamiania kontenerów platformy Docker w środowisku deweloperskim, wykonaj następujące kroki.
Jeśli jeszcze tego nie zrobiono, zainstaluj narzędzia platformy Azure dla programu VS Code.
Instrukcje | Zrzut ekranu |
---|---|
Krok 1. Użyj SHIFT + ALT + A , aby otworzyć rozszerzenie platformy Azure i potwierdzić, że masz połączenie z platformą Azure. Możesz również wybrać ikonę platformy Azure na pasku rozszerzeń programu VS Code. Jeśli nie zalogowałeś się, wybierz pozycję Zaloguj się do platformy Azure i postępuj zgodnie z monitami. Jeśli masz problem z uzyskaniem dostępu do subskrypcji platformy Azure, może to być spowodowane tym, że znajdujesz się za serwerem proxy. Aby rozwiązać problemy z połączeniem, zobacz Połączenia sieciowe w programie Visual Studio Code. |
![]() ![]() |
Krok 2. Użyj CTRL + SHIFT + X, aby otworzyć rozszerzenia, wyszukać rozszerzenie platformy Docker i zainstalować rozszerzenie. Możesz również wybrać ikonę Rozszerzenia na pasku rozszerzeń programu VS Code. |
![]() |
Krok 3. Wybierz ikonę platformy Docker na pasku rozszerzenia, rozwiń obrazy i kliknij prawym przyciskiem myszy obraz platformy Docker, aby uruchomić go jako kontener. |
![]() |
Krok 4: Monitoruj dane wyjściowe uruchamiania Dockera w oknie Terminalu. |
![]() |
Azure CLI i Docker CLI
Możesz również pracować z obrazami i kontenerami platformy Docker w języku Python przy użyciu interfejsu wiersza polecenia platformy Azure i interfejsu wiersza polecenia platformy Docker. Zarówno program VS Code, jak i PyCharm mają terminale, w których można uruchamiać te interfejsy CLI.
Użyj interfejsu wiersza polecenia, jeśli potrzebujesz bardziej precyzyjnej kontroli nad argumentami kompilacji i uruchamiania oraz automatyzacji. Na przykład następujące polecenie pokazuje, jak za pomocą Azure CLI az acr build określić nazwę obrazu Docker.
az acr build --registry <registry-name> \
--resource-group <resource-group> \
--target pythoncontainerwebapp:latest .
W innym przykładzie rozważ następujące polecenie, które pokazuje, jak używać polecenia uruchamiania interfejsu wiersza polecenia platformy Docker. W przykładzie pokazano, jak uruchomić kontener Docker, który komunikuje się z bazą danych MongoDB w środowisku deweloperskim poza kontenerem. Różne wartości do ukończenia polecenia są łatwiejsze do zautomatyzowania w przypadku określenia w wierszu polecenia.
docker run --rm -it \
--publish <port>:<port> --publish 27017:27017 \
--add-host mongoservice:<your-server-IP-address> \
--env CONNECTION_STRING=mongodb://mongoservice:27017 \
--env DB_NAME=<database-name> \
--env COLLECTION_NAME=<collection-name> \
containermongo:latest
Aby uzyskać więcej informacji na temat tego scenariusza, zobacz Kompilowanie i testowanie konteneryzowanej aplikacji internetowej w języku Python lokalnie.
Zmienne środowiskowe w kontenerach
Projekty języka Python często używają zmiennych środowiskowych do przekazywania danych konfiguracji do kodu aplikacji. Takie podejście umożliwia większą elastyczność w różnych środowiskach. Na przykład szczegóły połączenia z bazą danych można przechowywać w zmiennych środowiskowych, co ułatwia przełączanie się między bazami danych programowania, testowania i produkcji bez modyfikowania kodu. Ta separacja konfiguracji z kodu promuje czystsze wdrożenia i zwiększa bezpieczeństwo i łatwość konserwacji.
Pakiety takie jak python-dotenv są często używane do odczytywania par klucz-wartość z pliku env i ustawiania ich jako zmiennych środowiskowych. Plik env jest przydatny podczas uruchamiania w środowisku wirtualnym, ale nie jest zalecany podczas pracy z kontenerami. Nie należy kopiować pliku env do obrazu platformy Docker, zwłaszcza jeśli zawiera informacje poufne, a kontener zostanie upubliczniony. Użyj pliku .dockerignore , aby wykluczyć pliki kopiowane do obrazu platformy Docker. Aby uzyskać więcej informacji, zobacz sekcję Środowiska wirtualne i kontenery w tym artykule.
Zmienne środowiskowe można przekazać do kontenerów na kilka sposobów:
- Zdefiniowane w pliku Dockerfile jako instrukcje ENV .
- Przekazano jako
--build-arg
argumenty za pomocą polecenia build Docker. - Przekazano jako
--secret
argumenty za pomocą polecenia kompilacji platformy Docker i zaplecza BuildKit . - Przekazane jako
--env
lub--env-file
argumenty za pomocą polecenia Docker run.
Dwie pierwsze opcje mają taką samą wadę jak w przypadku plików env, mianowicie, że twardo kodujesz potencjalnie poufne informacje w obrazie Dockera. Możesz sprawdzić obraz platformy Docker i zobaczyć zmienne środowiskowe, na przykład za pomocą polecenia inspekcja obrazu platformy Docker.
Trzecia opcja zestawu BuildKit umożliwia przekazywanie informacji tajnych do użycia w pliku Dockerfile do tworzenia obrazów platformy Docker w bezpieczny sposób, który nie zostanie zapisany w końcowym obrazie.
Czwarta opcja przekazywania zmiennych środowiskowych za pomocą polecenia docker run oznacza, że obraz Dockera nie zawiera tych zmiennych. Jednak zmienne są nadal widoczne podczas sprawdzania wystąpienia kontenera (na przykład za pomocą docker container inspect). Ta opcja może być akceptowalna, gdy dostęp do wystąpienia kontenera jest kontrolowany lub w scenariuszach testowych albo deweloperskich.
Oto przykład przekazywania zmiennych środowiskowych przy użyciu polecenia uruchamiania interfejsu wiersza polecenia platformy Docker i używania argumentu --env
.
# PORT=8000 for Django and 5000 for Flask
export PORT=<port-number>
docker run --rm -it \
--publish $PORT:$PORT \
--env CONNECTION_STRING=<connection-info> \
--env DB_NAME=<database-name> \
<dockerimagename:tag>
W programie VS Code (rozszerzeniu platformy Docker) lub wtyczki PyCharm (wtyczka platformy Docker) narzędzia interfejsu użytkownika upraszczają zarządzanie obrazami i kontenerami platformy Docker, wykonując standardowe polecenia interfejsu wiersza polecenia platformy Docker (takie jak kompilacja platformy Docker, uruchamianie platformy Docker) w tle.
Na koniec określanie zmiennych środowiskowych podczas wdrażania kontenera na platformie Azure różni się od używania zmiennych środowiskowych w środowisku deweloperskim. Przykład:
W przypadku usługi Web App for Containers można skonfigurować ustawienia aplikacji podczas konfigurowania usługi App Service. Te ustawienia są dostępne dla kodu aplikacji jako zmienne środowiskowe i dostępne przy użyciu standardowego wzorca os.environ . W razie potrzeby można zmienić wartości po początkowym wdrożeniu. Aby uzyskać więcej informacji, zobacz Access app settings as environment variables (Uzyskiwanie dostępu do ustawień aplikacji jako zmiennych środowiskowych).
W przypadku usługi Azure Container Apps można skonfigurować zmienne środowiskowe podczas początkowej konfiguracji aplikacji kontenera. Kolejna modyfikacja zmiennych środowiskowych powoduje utworzenie wersji kontenera. Ponadto usługa Azure Container Apps umożliwia definiowanie tajnych danych na poziomie aplikacji, a następnie odwoływanie się do nich w zmiennych środowiskowych. Aby uzyskać więcej informacji, zobacz Zarządzanie sekretami w usłudze Azure Container Apps.
Inną opcją możesz użyć łącznika usług , aby ułatwić łączenie usług obliczeniowych platformy Azure z innymi usługami zapasowymi. Ta usługa konfiguruje ustawienia sieci i informacje o połączeniu (na przykład generowanie zmiennych środowiskowych) między usługami obliczeniowymi i docelowymi usługami zapasowymi na płaszczyźnie zarządzania.
Wyświetlanie dzienników kontenera
Wyświetl dzienniki wystąpienia kontenera, aby zobaczyć wyniki komunikatów diagnostycznych z kodu i rozwiązywać problemy w kodzie kontenera. Poniżej przedstawiono kilka sposobów wyświetlania dzienników podczas uruchamiania kontenera w środowisku deweloperskim:
Uruchamiając kontener za pomocą VS Code lub PyCharm, jak pokazano w sekcji VS Code i PyCharm, można zobaczyć logi w oknach terminalu otwieranych przy wykonywaniu polecenia Docker run.
Jeśli używasz polecenia run Docker CLI z flagą
-it
interaktywną, zobaczysz dane wyjściowe po poleceniu.W programie Docker Desktop można również wyświetlić dzienniki dla uruchomionego kontenera.
Podczas wdrażania kontenera na platformie Azure masz również dostęp do dzienników kontenerów. Poniżej przedstawiono kilka usług platformy Azure i sposób uzyskiwania dostępu do dzienników kontenerów w witrynie Azure Portal.
Usługa platformy Azure | Jak uzyskać dostęp do dzienników w witrynie Azure Portal |
---|---|
Aplikacja webowa dla kontenerów | Przejdź do zasobu Diagnozowanie i rozwiązywanie problemów , aby wyświetlić dzienniki. Diagnostyka to inteligentne i interaktywne środowisko ułatwiające rozwiązywanie problemów z aplikacją bez konieczności konfigurowania. Aby uzyskać widok dzienników w czasie rzeczywistym, przejdź do monitorowania - strumienia dzienników. Aby uzyskać bardziej szczegółowe zapytania dziennika i konfigurację, zobacz inne zasoby w obszarze Monitorowanie. |
Azure Container Apps (aplikacje kontenerowe Azure) | Przejdź do zasobu środowiska Diagnozowanie i rozwiązywanie problemów w celu rozwiązywania problemów ze środowiskiem. Częściej masz potrzebę zobaczenia logów kontenerów. W zasobie kontenera, w obszarze aplikacji - Zarządzanie wersjami, wybierz wersję i stamtąd możesz wyświetlić dzienniki systemu i konsoli. Aby uzyskać bardziej szczegółowe zapytania dziennika i konfigurację, zobacz zasoby w obszarze Monitorowanie. |
Azure Container Instances (Instancje Kontenerów Azure) | Przejdź do zasobu Kontenery i wybierz pozycję Dzienniki. |
W przypadku tych usług poniżej przedstawiono polecenia interfejsu wiersza polecenia platformy Azure umożliwiające dostęp do dzienników.
Usługa platformy Azure | Polecenie CLI Azure, aby uzyskać dostęp do dzienników |
---|---|
Aplikacja webowa dla kontenerów | az webapp log |
Azure Container Apps (aplikacje kontenerowe Azure) | az containerapps logs |
Azure Container Instances (Instancje Kontenerów Azure) | az container logs (wyświetla logi kontenera) |
Istnieje również obsługa wyświetlania dzienników w programie VS Code. Musisz mieć zainstalowane narzędzia platformy Azure dla programu VS Code . Poniżej przedstawiono przykład wyświetlania dzienników usługi Web Apps for Containers (App Service) w programie VS Code.