Partilhar via


Visão geral dos aplicativos de contêiner Python no Azure

Este artigo explica como pegar um projeto Python — como um aplicativo Web — e implantá-lo como um contêiner do Docker no Azure. Ele abrange o fluxo de trabalho geral de conteinerização, as opções de implantação do Azure para contêineres e as configurações de contêiner específicas do Python no Azure. A criação e implantação de contêineres do Docker no Azure segue um processo padrão entre idiomas, com configurações específicas do Python no Dockerfile, requirements.txte configurações para estruturas da Web como Django, Flask e FastAPI.

Cenários de fluxo de trabalho de contêiner

Para o desenvolvimento de contêineres Python, alguns fluxos de trabalho típicos para mover de código para contêiner são discutidos na tabela a seguir.

Cenário Descrição Fluxo de trabalho
Desenvolvimento Crie imagens do Python Docker localmente em seu ambiente de desenvolvimento. Código: clone o código do seu aplicativo localmente usando o Git (com o Docker instalado).

Build: Use Docker CLI, VS Code (com extensões), PyCharm (com plug-in Docker). Descrito na seção Trabalhando com imagens e contêineres do Python Docker.

Teste: execute e teste o contêiner localmente.

Push: envie a imagem por push para um registro de contêiner como o Registro de Contêiner do Azure, o Docker Hub ou o registro privado.

Implantar: implante o contêiner do Registro em um serviço do Azure.
Híbrido Crie imagens do Docker no Azure, mas inicie o processo a partir do seu ambiente local. Código: clone o código localmente (não é necessário para que o Docker seja instalado).

Compilação: para acionar compilações no Azure, use o VS Code (com extensões remotas) ou a CLI do Azure.

Push: envie a imagem criada para o Registro de Contêiner do Azure.

Implantar: implante o contêiner do Registro em um serviço do Azure.
Azure Use o Azure Cloud Shell para criar e implantar contêineres inteiramente na nuvem. Código: clone o repositório GitHub no Azure Cloud Shell.

Compilar: Use o Azure CLI ou o Docker CLI na Cloud Shell.

Push: envie a imagem por push para um registro como o Registro de Contêiner do Azure, o Docker Hub ou o registro privado.

Implantar: implante o contêiner do Registro em um serviço do Azure.

O objetivo final desses fluxos de trabalho é ter um contêiner em execução em um dos recursos do Azure que dão suporte a contêineres do Docker, conforme listado na próxima seção.

Um ambiente de desenvolvimento pode ser:

  • Sua estação de trabalho local com Visual Studio Code ou PyCharm
  • Codespaces (um ambiente de desenvolvimento hospedado na nuvem)
  • Visual Studio Dev Containers (um contêiner como um ambiente de desenvolvimento)

Opções de contêiner de implantação no Azure

Os aplicativos de contêiner Python são suportados nos seguintes serviços.

Serviço Descrição
Web App para contêineres O Serviço de Aplicativo do Azure é uma plataforma de hospedagem totalmente gerenciada para aplicativos Web em contêineres, incluindo sites e APIs Web. Ele dá suporte a implantações escaláveis e integra-se perfeitamente com fluxos de trabalho de CI/CD usando o Docker Hub, o Azure Container Registry e o GitHub. Esse serviço é ideal para desenvolvedores que desejam um caminho simples e eficiente para implantar aplicativos em contêineres, ao mesmo tempo em que se beneficiam de todos os recursos da plataforma do Serviço de Aplicativo do Azure. Ao empacotar seu aplicativo e todas as suas dependências em um único contêiner implantável, você ganha portabilidade e facilidade de gerenciamento — sem precisar gerenciar a infraestrutura.

Exemplo: implantar um aplicativo Web Flask ou FastPI no Serviço de Aplicativo do Azure.
Azure Container Apps (ACA) O Azure Container Apps (ACA) é um serviço de contêiner sem servidor totalmente gerenciado com tecnologia Kubernetes e tecnologias de código aberto como Dapr, KEDA e envoy. Seu design incorpora as melhores práticas do setor e é otimizado para a execução de contêineres de uso geral. O ACA abstrai a complexidade do gerenciamento de uma infraestrutura do Kubernetes — o acesso direto à API do Kubernetes não é necessário ou suportado. Em vez disso, ele oferece construções de aplicativos de nível mais alto, como revisões, dimensionamento, certificados e ambientes para simplificar os fluxos de trabalho de desenvolvimento e implantação. Esse serviço é ideal para equipes de desenvolvimento que procuram criar e implantar microsserviços em contêineres com sobrecarga operacional mínima, permitindo que se concentrem na lógica do aplicativo em vez do gerenciamento de infraestrutura.

Exemplo: Implantar um aplicativo Web Flask ou FastPI em Aplicativos de Contêiner do Azure.
de Instâncias de Contêiner do Azure (ACI) As Instâncias de Contêiner do Azure (ACI) são uma oferta sem servidor que fornece um único pod de Hyper-V contêineres isolados sob demanda. A cobrança é baseada no consumo real de recursos e não na infraestrutura pré-alocada, tornando-a adequada para cargas de trabalho de curta duração ou que podem ser interrompidas. Ao contrário de outros serviços de contêiner, o ACI não inclui suporte interno para conceitos como dimensionamento, balanceamento de carga ou certificados TLS. Em vez disso, ele normalmente funciona como um bloco de construção de contêiner fundamental, geralmente integrado aos serviços do Azure, como o Serviço Kubernetes do Azure (AKS) para orquestração. O ACI se destaca como uma escolha leve quando as abstrações e recursos de nível mais alto dos Aplicativos de Contêiner do Azure não são necessários

Exemplo: Criar uma imagem de contêiner para implantação em Instâncias de Contêiner do Azure. (O tutorial não é específico do Python, mas os conceitos mostrados se aplicam a todas as linguagens.)
Serviço Kubernetes do Azure (AKS) O Serviço Kubernetes do Azure (AKS) é uma opção Kubernetes totalmente gerenciada no Azure que lhe dá controle total sobre seu ambiente Kubernetes. Ele suporta acesso direto à API do Kubernetes e pode executar qualquer carga de trabalho padrão do Kubernetes. O cluster completo reside na sua subscrição, com as configurações e operações do cluster sob o seu controlo e responsabilidade. O ACI é ideal para equipes que buscam uma solução de contêiner totalmente gerenciada, enquanto o AKS oferece controle total sobre o cluster Kubernetes, exigindo que você gerencie configurações, rede, dimensionamento e operações. O Azure lida com o plano de controle e o provisionamento de infraestrutura, mas a operação diária e a segurança do cluster estão sob o controle da sua equipe. Esse serviço é ideal para equipes que desejam a flexibilidade e o poder do Kubernetes com o benefício adicional da infraestrutura gerenciada do Azure, mantendo a propriedade total sobre o ambiente de cluster.

Exemplo: implantar um cluster do Serviço Kubernetes do Azure usando a CLI do Azure.
Funções do Azure O Azure Functions oferece uma plataforma de Funções como Serviço (FaaS) orientada por eventos e sem servidor que permite executar pequenas partes de código (funções) em resposta a eventos, sem gerenciar a infraestrutura. O Azure Functions compartilha muitas características com os Aplicativos de Contêiner do Azure em relação à escala e à integração com eventos, mas é otimizado para funções de curta duração implantadas como código ou contêineres. Ferramenta para equipas que procuram desencadear a execução de funções em eventos; por exemplo, para ligar a outras fontes de dados. Como os Aplicativos de Contêiner do Azure, o Azure Functions dá suporte ao dimensionamento automático e à integração com fontes de eventos (por exemplo, solicitações HTTP, filas de mensagens ou atualizações de armazenamento de blob). Este serviço é ideal para equipes que criam fluxos de trabalho leves e acionados por eventos, como processar uploads de arquivos ou responder a alterações de banco de dados, em Python ou outras linguagens.

Exemplo: Crie uma função no Linux usando um contêiner personalizado.

Para obter uma comparação mais detalhada desses serviços, consulte Comparando aplicativos de contêiner com outras opções de contêiner do Azure.

Ambientes virtuais e contêineres

Os ambientes virtuais em Python isolam as dependências do projeto das instalações Python no nível do sistema, garantindo a consistência entre os ambientes de desenvolvimento. Um ambiente virtual inclui seu próprio interpretador Python isolado, juntamente com as bibliotecas e scripts necessários para executar o código específico do projeto dentro desse ambiente. As dependências para projetos Python são gerenciadas através do arquivo requirements.txt . Ao especificar dependências em um arquivo requirements.txt , os desenvolvedores podem reproduzir o ambiente exato necessário para seu projeto. Essa abordagem facilita transições mais suaves para implantações em contêineres, como o Serviço de Aplicativo do Azure, onde a consistência do ambiente é essencial para um desempenho confiável do aplicativo.

Sugestão

Em projetos Python em contêineres, os ambientes virtuais geralmente são desnecessários porque os contêineres do Docker fornecem ambientes isolados com seu próprio interpretador Python e dependências. No entanto, você pode usar ambientes virtuais para desenvolvimento local ou testes. Para manter as imagens do Docker enxutas, exclua ambientes virtuais usando um arquivo .dockerignore , o que impede a cópia de arquivos desnecessários para a imagem.

Você pode pensar nos contêineres do Docker como oferecendo recursos semelhantes aos ambientes virtuais Python, mas com vantagens mais amplas em reprodutibilidade, isolamento e portabilidade. Ao contrário dos ambientes virtuais, os contêineres do Docker podem ser executados de forma consistente em diferentes sistemas operacionais e ambientes, desde que um tempo de execução do contêiner esteja disponível.

Um contêiner do Docker inclui o código do projeto Python junto com tudo o que ele precisa para ser executado, como dependências, configurações de ambiente e bibliotecas do sistema. Para criar um contêiner, primeiro crie uma imagem do Docker a partir do código e da configuração do projeto e, em seguida, inicie um contêiner, que é uma instância executável dessa imagem.

Para projetos Python em contêineres, os arquivos-chave são descritos na tabela a seguir:

Ficheiro de projeto Descrição
requirements.txt Este arquivo contém a lista definitiva de dependências Python necessárias para seu aplicativo. O Docker usa essa lista durante o processo de compilação da imagem para instalar todos os pacotes necessários. Isso garante a consistência entre os ambientes de desenvolvimento e implantação.
Dockerfile Este arquivo contém instruções para criar sua imagem do Python Docker, incluindo a seleção de imagem base, instalação de dependência, cópia de código e comandos de inicialização de contêiner. Ele define o ambiente de execução completo para seu aplicativo. Para obter mais informações, consulte a seção Instruções do Dockerfile para Python.
.dockerignore Esse arquivo especifica os arquivos e diretórios que devem ser excluídos ao copiar conteúdo para a imagem do Docker com o COPY comando no Dockerfile. Esse arquivo usa padrões semelhantes a .gitignore para definir exclusões. O ficheiro .dockerignore suporta padrões de exclusão semelhantes aos ficheiros .gitignore . Para obter mais informações, consulte Arquivo .dockerignore.

A exclusão de arquivos ajuda no desempenho da criação da imagem, mas também deve ser usada para evitar a adição de informações confidenciais à imagem onde ela pode ser inspecionada. Por exemplo, o .dockerignore deve conter linhas para ignorar .env e .venv (ambientes virtuais).

Configurações de contêiner para estruturas da Web

As estruturas da Web normalmente se ligam a portas padrão (como 5000 para Flask, 8000 para FastAPI). Ao implantar contêineres em serviços do Azure, como Instâncias de Contêiner do Azure, Serviço de Kubernetes do Azure (AKS) ou Serviço de Aplicativo para Contêineres, é crucial expor e configurar explicitamente a porta de escuta do contêiner para garantir o roteamento adequado do tráfego de entrada. Configurar a porta correta garante que a infraestrutura do Azure possa direcionar solicitações para o ponto de extremidade correto dentro do contêiner.

Estrutura Web Porto
Django oito mil
Frasco 5000 ou 5002
FastAPI (uvicorn) 8000 ou 80

A tabela a seguir mostra como definir a porta para diferentes soluções de contêiner do Azure.

Solução de contêiner do Azure Como definir a porta do aplicativo Web
Aplicativo Web para contêineres Por predefinição, o App Service assume que o seu contêiner personalizado está a escutar na porta 80 ou na porta 8080. Se o contentor escutar uma porta diferente, defina a configuração de aplicação WEBSITES_PORT no aplicativo do Serviço de Aplicações. Para obter mais informações, consulte Configurar um contêiner personalizado para o Serviço de Aplicativo do Azure.
Aplicativos de contêineres do Azure Os Aplicativos de Contêiner do Azure permitem que você exponha seu aplicativo de contêiner à Web pública, à sua rede virtual ou a outros aplicativos de contêiner dentro do mesmo ambiente, habilitando a entrada. Defina a entrada targetPort para a porta em que o teu contentor recebe solicitações. O ponto de extremidade de entrada do aplicativo é sempre exposto na porta 443. Para obter mais informações, consulte Configurar entrada HTTPS ou TCP em Aplicativos de Contêiner do Azure.
Instâncias de contêiner do Azure, Kubernetes do Azure Você define a porta na qual a sua aplicação está a escutar durante a criação do contêiner ou do pod. Sua imagem de contêiner deve incluir uma estrutura web, um servidor de aplicativos (por exemplo, gunicorn, uvicorn) e, opcionalmente, um servidor web (por exemplo, nginx). Em cenários mais complexos, você pode dividir as responsabilidades em dois contêineres — um para o servidor de aplicativos e outro para o servidor Web. Nesse caso, o contêiner do servidor Web normalmente expõe as portas 80 ou 443 para tráfego externo.

Python Dockerfile

Um Dockerfile é um arquivo de texto que contém instruções para criar uma imagem do Docker para um aplicativo Python. A primeira instrução normalmente especifica a imagem base a partir da qual começar. As instruções subsequentes detalham ações como a instalação do software necessário, a cópia de arquivos de aplicativos e a configuração do ambiente para criar uma imagem executável. A tabela a seguir fornece exemplos específicos do Python para instruções do Dockerfile comumente usadas.

Instrução Propósito Exemplo
DE Define a imagem base para instruções subsequentes. FROM python:3.8-slim
EXPOSER Informa ao Docker que o contêiner escuta uma porta especificada em tempo de execução. EXPOSE 5000
CÓPIA Copia arquivos ou diretórios da origem especificada e os adiciona ao sistema de arquivos do contêiner no caminho de destino especificado. COPY . /app
CORRER Executa um comando dentro da imagem do Docker. Por exemplo, adicionar as dependências. O comando é executado uma vez em tempo de compilação. RUN python -m pip install -r requirements.txt
CMD O comando fornece o padrão para executar um contêiner. Só pode haver uma instrução CMD. CMD ["gunicorn", "--bind", "0.0.0.0:5000", "wsgi:app"]

O comando de construção do Docker cria imagens do Docker a partir de um Dockerfile e de um contexto. O contexto de uma compilação é o conjunto de arquivos localizados no caminho ou URL especificado. Normalmente, você cria uma imagem a partir da raiz do seu projeto Python e o caminho para o comando build é "." como mostrado no exemplo a seguir.

docker build --rm --pull  --file "Dockerfile"  --tag "mywebapp:latest"  .

O processo de compilação pode referir-se a qualquer um dos arquivos no contexto. Por exemplo, sua compilação pode usar uma instrução COPY para fazer referência a um arquivo no contexto. Aqui está um exemplo de um Dockerfile para um projeto Python usando a estrutura 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"]

Você pode criar um Dockerfile manualmente ou criá-lo automaticamente com o VS Code e a extensão Docker. Para obter mais informações, consulte Gerando arquivos do Docker.

O comando de compilação do Docker faz parte da CLI do Docker. Quando você usa IDEs como VS Code ou PyCharm, os comandos da interface do usuário para trabalhar com imagens do Docker chamam o comando build para você e automatizam a especificação de opções.

Trabalhando com imagens e contêineres do Python Docker

VS Code e PyCharm

Ambientes de desenvolvimento integrados (IDEs), como Visual Studio Code (VS Code) e PyCharm, simplificam o desenvolvimento de contêineres Python integrando tarefas do Docker ao seu fluxo de trabalho. Com extensões ou plug-ins, esses IDEs simplificam a criação de imagens do Docker, a execução de contêineres e a implantação em serviços do Azure, como o Serviço de Aplicativo ou Instâncias de Contêiner. Aqui estão algumas das coisas que você pode fazer com o VS Code e o PyCharm.

  • Baixe e crie imagens do Docker.

    • Crie imagens em seu ambiente de desenvolvimento.
    • Crie imagens do Docker no Azure sem o Docker instalado no ambiente de desenvolvimento. (Para o PyCharm, use a CLI do Azure para criar imagens no Azure.)
  • Crie e execute contêineres do Docker a partir de uma imagem existente, uma imagem extraída ou diretamente de um Dockerfile.

  • Execute aplicativos de vários contêineres com o Docker Compose.

  • Conecte-se e trabalhe com registros de contêiner como Docker Hub, GitLab, JetBrains Space, Docker V2 e outros registros do Docker auto-hospedados.

  • (Apenas código VS) Adicione um Dockerfile e o Docker componha arquivos que são adaptados para seu projeto Python.

Para configurar o VS Code e o PyCharm para executar contêineres do Docker em seu ambiente de desenvolvimento, use as etapas a seguir.

Se ainda não o fez, instale as Ferramentas do Azure para VS Code.

Instruções Captura de ecrã
Etapa 1: Use SHIFT + ALT + A para abrir a extensão do Azure e confirmar que você está conectado ao Azure.

Você também pode selecionar o ícone do Azure na barra de extensões do VS Code.

Se você não estiver conectado, selecione Entrar no Azure e siga as instruções.

Se você tiver problemas para acessar sua assinatura do Azure, pode ser porque está atrás de um proxy. Para resolver problemas de conexão, consulte Conexões de rede no Visual Studio Code.
Captura de ecrã a mostrar o aspeto das Ferramentas do Azure depois de iniciar sessão. Captura de ecrã a mostrar o aspeto das Ferramentas do Azure se não tiver iniciado sessão.
Etapa 2: Use CTRL + SHIFT + X para abrir Extensões, procure a extensão Docker e instale a extensão.

Você também pode selecionar o ícone Extensões na barra de extensões do VS Code.
Captura de tela mostrando como adicionar a extensão Docker ao VS Code.
Etapa 3: Selecione o ícone do Docker na barra de extensão, expanda imagens e clique com o botão direito do mouse em uma imagem do Docker execute-a como um contêiner. Captura de tela mostrando como usar a extensão Docker no VS Code para executar um contêiner a partir de uma imagem do Docker.
Etapa 4: Monitore a saída de execução do Docker na janela do Terminal . Captura de tela mostrando um exemplo de execução de um contêiner no VS Code.

CLI do Azure e CLI do Docker

Você também pode trabalhar com imagens e contêineres do Python Docker usando a CLI do Azure e a CLI do Docker. Tanto o VS Code quanto o PyCharm têm terminais onde você pode executar essas CLIs.

Use uma CLI quando quiser um controle mais fino sobre argumentos de compilação e execução e para automação. Por exemplo, o comando a seguir mostra como usar o Azure CLI az acr build para especificar o nome da imagem do Docker.

az acr build --registry <registry-name> \
  --resource-group <resource-group> \
  --target pythoncontainerwebapp:latest .

Como outro exemplo, considere o comando a seguir que mostra como usar o comando de execução da CLI do Docker. O exemplo mostra como executar um contêiner do Docker que se comunica com uma instância do MongoDB em seu ambiente de desenvolvimento, fora do contêiner. Os diferentes valores para concluir o comando são mais fáceis de automatizar quando especificados em uma linha de comando.

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  

Para obter mais informações sobre esse cenário, consulte Criar e testar um aplicativo Web Python em contêiner localmente.

Variáveis de ambiente em contêineres

Os projetos Python geralmente usam variáveis de ambiente para passar dados de configuração para o código do aplicativo. Essa abordagem permite maior flexibilidade em diferentes ambientes. Por exemplo, os detalhes da conexão do banco de dados podem ser armazenados em variáveis de ambiente, facilitando a alternância entre bancos de dados de desenvolvimento, teste e produção sem modificar o código. Essa separação da configuração do código promove implantações mais limpas e aumenta a segurança e a capacidade de manutenção.

Pacotes como python-dotenv são frequentemente usados para ler pares chave-valor de um arquivo .env e defini-los como variáveis de ambiente. Um arquivo .env é útil ao ser executado em um ambiente virtual, mas não é recomendado ao trabalhar com contêineres. Não copie o arquivo .env para a imagem do Docker, especialmente se ele contiver informações confidenciais e o contêiner for tornado público. Use o arquivo .dockerignore para excluir arquivos de serem copiados para a imagem do Docker. Para obter mais informações, consulte a seção Ambientes virtuais e contêineres neste artigo.

Você pode passar variáveis de ambiente para contêineres de algumas maneiras:

  1. Definido no Dockerfile como instruções ENV .
  2. Passado como argumentos --build-arg no comando build do Docker.
  3. Passado como argumentos --secret no comando build do Docker e no backend BuildKit.
  4. Inserido como argumentos --env ou --env-file com o comando run do Docker.

As duas primeiras opções têm a mesma desvantagem observada com os arquivos .env , ou seja, que você está codificando informações potencialmente confidenciais em uma imagem do Docker. Você pode inspecionar uma imagem do Docker e ver as variáveis de ambiente, por exemplo, com o comando docker image inspect.

A terceira opção com o BuildKit permite que você passe informações secretas para serem usadas no Dockerfile para construir imagens docker de uma maneira segura que não acabará armazenada na imagem final.

A quarta opção de passar variáveis de ambiente com o comando Docker run significa que a imagem do Docker não contém as variáveis. No entanto, as variáveis ainda são visíveis ao inspecionar a instância do container (por exemplo, com docker container inspect). Essa opção pode ser aceitável quando o acesso à instância do contêiner é controlado ou em cenários de teste ou desenvolvimento.

Aqui está um exemplo de passagem de variáveis de ambiente usando o comando run da CLI do Docker e usando o --env argumento.

# 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>

No VS Code (extensão do Docker) ou no PyCharm (plug-in do Docker), as ferramentas da interface do usuário simplificam o gerenciamento de imagens e contêineres do Docker executando comandos padrão da CLI do docker (como docker build, docker run) em segundo plano.

Por fim, especificar variáveis de ambiente ao implantar um contêiner no Azure é diferente de usar variáveis de ambiente em seu ambiente de desenvolvimento. Por exemplo:

  • Para o Aplicativo Web para Contêineres, você define as configurações do aplicativo durante a configuração do Serviço de Aplicativo. Essas configurações estão disponíveis para o código do seu aplicativo como variáveis de ambiente e são acessadas usando o padrão os.environ. Você pode alterar valores após a implantação inicial quando necessário. Para obter mais informações, consulte Configurações do aplicativo do Access como variáveis de ambiente.

  • Para Aplicativos de Contêiner do Azure, você configura variáveis de ambiente durante a configuração inicial do aplicativo de contêiner. A modificação subsequente das variáveis de ambiente cria uma revisão do contêiner. Além disso, os Aplicativos de Contêiner do Azure permitem definir segredos no nível do aplicativo e, em seguida, fazer referência a eles em variáveis de ambiente. Para obter mais informações, consulte Gerenciar segredos em aplicativos de contêiner do Azure.

Como outra opção, você pode usar o Service Connector para ajudá-lo a conectar os serviços de computação do Azure a outros serviços de suporte. Esse serviço define as configurações de rede e as informações de conexão (por exemplo, gerando variáveis de ambiente) entre os serviços de computação e os serviços de suporte de destino no plano de gerenciamento.

Exibindo logs de contêiner

Veja os logs de instância do contenedor para visualizar a saída de mensagens de diagnóstico do código e para resolver problemas no código do seu contenedor. Aqui estão várias maneiras de visualizar logs ao executar um contêiner em seu ambiente de desenvolvimento:

  • Executando um contêiner com VS Code ou PyCharm, como mostrado na seção VS Code e PyCharm, você pode ver os logs nas janelas do terminal abertas quando a execução do Docker é executada.

  • Se estiver a usar o comando run da CLI do Docker com o sinalizador interativo -it, verá a saída após o comando.

  • No Docker Desktop, você também pode exibir logs para um contêiner em execução.

Ao implantar um contêiner no Azure, você também tem acesso aos logs de contêiner. Aqui estão vários serviços do Azure e como acessar logs de contêiner no portal do Azure.

Serviço do Azure Como acessar logs no portal do Azure
Aplicativo Web para contêineres Vá para o recurso Diagnosticar e resolver problemas para exibir logs. O diagnóstico é uma experiência inteligente e interativa para ajudá-lo a solucionar problemas do seu aplicativo sem a necessidade de configuração. Para obter uma visualização em tempo real dos logs, vá para a Monitorização - Fluxo de Logs. Para obter consultas de log e configuração mais detalhadas, consulte os outros recursos em Monitoramento.
Aplicações de Contentores do Azure Vá para o recurso do ambiente Diagnosticar e resolver problemas para solucionar problemas do ambiente. Com mais frequência, você deseja ver logs de contêiner. No recurso de contêiner, emGerenciamento de revisão - , selecione a revisão e, a partir daí, você pode visualizar os logs do sistema e do console. Para obter consultas de log e configuração mais detalhadas, consulte os recursos em Monitoramento.
Azure Container Instances (Instâncias de Contentores do Azure) Vá para o recurso Contêineres e selecione Logs.

Para esses serviços, aqui estão os comandos da CLI do Azure para acessar logs.

Serviço do Azure Comando da CLI do Azure para acessar logs
Aplicativo Web para contêineres az webapp log
Aplicações de Contentores do Azure az containerapps logs
Azure Container Instances (Instâncias de Contentores do Azure) az contentor logs

Também há suporte para visualização de logs no VS Code. Você deve ter o Azure Tools for VS Code instalado. Abaixo está um exemplo de visualização dos logs de aplicativos Web para contêineres (Serviço de Aplicativo) na aplicação VS Code.

Captura de tela mostrando como exibir logs no VS Code for Web Apps for Containers.

Próximos passos