Compartilhar via


Visão geral dos Aplicativos de Contêiner do Python no Azure

Este artigo explica como pegar um projeto do Python, como um aplicativo Web, e implantá-lo como um contêiner do Docker no Azure. Ele abrange o fluxo de trabalho de contêinerização geral, 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êiner do 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
Dev Crie imagens do Docker do Python localmente em seu ambiente de desenvolvimento. Código: clone o código do aplicativo localmente usando o Git (com o Docker instalado).

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

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 Hub do Docker ou o Registro Privado.

Implantar: implante o contêiner do registro em um serviço do Azure.
Híbridos 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 que o Docker seja instalado).

Build: para disparar builds 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.
Azul 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.

Build: use a CLI do Azure ou a CLI do Docker no Cloud Shell.

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

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

A meta 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:

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

Há suporte para aplicativos de contêiner do Python nos serviços a seguir.

Serviço Descrição
Aplicativo Web 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 escalonáveis e integra-se perfeitamente com fluxos de trabalho de CI/CD usando o Hub do Docker, o Registro de Contêiner do Azure 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 todas as funcionalidades 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ê obtém portabilidade e facilidade de gerenciamento sem a necessidade de gerenciar a infraestrutura.

Exemplo: implantar um aplicativo Web Flask ou FastPI no Serviço de Aplicativo do Azure.
Aplicativos de Contêiner do Azure (ACA) Os Aplicativos de Contêiner do Azure (ACA) são um serviço de contêiner totalmente gerenciado sem servidor alimentado pelo Kubernetes e tecnologias de software livre, 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. A ACA abstrai a complexidade do gerenciamento de uma infraestrutura do Kubernetes– o acesso direto à API do Kubernetes não é necessário nem tem suporte. Em vez disso, ele oferece constructos de aplicativos de nível superior, 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 buscam criar e implantar microsserviços em contêineres com sobrecarga operacional mínima, permitindo que eles 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.
Instâncias de Contêiner do Azure (ACI) A ACI (Instâncias de Contêiner do Azure) é uma oferta sem servidor que fornece um único pod de contêineres isolados do Hyper-V sob demanda. A cobrança é baseada no consumo real de recursos em vez de na infraestrutura pré-alocada, tornando-a adequada para cargas de trabalho de curta duração ou intermitíveis. Ao contrário de outros serviços de contêiner, a ACI não inclui suporte interno para conceitos como dimensionamento, balanceamento de carga ou certificados TLS. Em vez disso, normalmente funciona como um bloco de construção de contêiner fundamental, geralmente integrado a serviços do Azure, como o AKS (Serviço de Kubernetes do Azure) para orquestração. A ACI se destaca como uma opção leve quando as abstrações de nível superior e os recursos 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 todos os idiomas.)
AKS (Serviço de Kubernetes do Azure) O AKS (Serviço de Kubernetes do Azure) é uma opção de Kubernetes totalmente gerenciada no Azure que oferece controle total sobre seu ambiente do Kubernetes. Ele dá suporte ao acesso direto à API do Kubernetes e pode executar qualquer carga de trabalho padrão do Kubernetes. O cluster completo reside em sua assinatura, com as configurações e as operações do cluster dentro de seu controle e responsabilidade. A ACI é ideal para equipes que buscam uma solução de contêiner totalmente gerenciada, enquanto o AKS oferece controle total sobre o cluster do Kubernetes, exigindo que você gerencie configurações, rede, dimensionamento e operações. O Azure manipula o plano de controle e o provisionamento de infraestrutura, mas a operação diária e a segurança do cluster estão dentro do controle de 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 do cluster.

Exemplo: implantar um cluster do Serviço de Kubernetes do Azure usando a CLI do Azure.
Azure Functions O Azure Functions oferece uma plataforma FaaS (Functions as-a-Service) controlada por eventos 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. al para equipes que procuram iniciar a execução de funções em eventos; por exemplo, para vincular a outras fontes de dados. Assim 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 blobs). Esse serviço é ideal para equipes que criam fluxos de trabalho leves e disparados por eventos, como processar uploads de arquivos ou responder a alterações de banco de dados, em Python ou em outros idiomas.

Exemplo: criar 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

Ambientes virtuais no Python isolam as dependências do projeto de instalações do Python no nível do sistema, garantindo consistência em ambientes de desenvolvimento. Um ambiente virtual inclui seu próprio interpretador de Python isolado, juntamente com as bibliotecas e scripts necessários para executar o código de projeto específico dentro desse ambiente. As dependências para projetos do Python são gerenciadas por meio 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, em que a consistência do ambiente é essencial para o desempenho confiável do aplicativo.

Dica

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

Você pode pensar em contêineres do Docker como oferecendo funcionalidades semelhantes aos ambientes virtuais do 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 consistentemente em diferentes sistemas operacionais e ambientes, desde que um runtime de contêiner esteja disponível.

Um contêiner do Docker inclui o código de projeto do Python, juntamente com tudo o que ele precisa executar, como dependências, configurações de ambiente e bibliotecas do sistema. Para criar um contêiner, primeiro crie uma imagem do Docker com base no código e na configuração do projeto e inicie um contêiner, que é uma instância executável dessa imagem.

Para containerizar projetos em Python, os arquivos essenciais são descritos na tabela a seguir:

Arquivo de projeto Descrição
requirements.txt Esse arquivo contém a lista definitiva de dependências do Python necessárias para seu aplicativo. O Docker usa essa lista durante o processo de build de imagem para instalar todos os pacotes necessários. Isso garante a consistência entre ambientes de desenvolvimento e implantação.
Dockerfile Este arquivo contém instruções para criar sua imagem do Docker do Python, incluindo a seleção de imagem base, a instalação de dependência, a cópia de código e os 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 arquivo .dockerignore dá suporte a padrões de exclusão semelhantes aos arquivos .gitignore . Para obter mais informações, consulte o arquivo .dockerignore.

Excluir arquivos ajuda no desempenho de construção da imagem, mas também deve ser usado para evitar a inclusão de informações confidenciais na imagem, onde elas podem ser inspecionadas. 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 associam a portas padrão (como 5000 para Flask, 8000 para FastAPI). Quando você está implantando contêineres em serviços do Azure, como Instâncias de Contêiner do Azure, AKS (Serviço de Kubernetes do Azure) ou Serviço de Aplicativo para Contêineres, é crucial que você exponha e configure 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 da Web Porto
Django 8.000
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 padrão, o Serviço de Aplicativo pressupõe que seu contêiner personalizado esteja escutando na porta 80 ou na porta 8080. Se o contêiner escutar uma porta diferente, defina a configuração do aplicativo WEBSITES_PORT em seu aplicativo do Serviço de Aplicativo. 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 expor seu aplicativo de contêiner à Web pública, à sua rede virtual ou a outros aplicativos de contêiner no mesmo ambiente, habilitando a entrada. Defina a entrada targetPort para a porta que o contêiner escuta para solicitações de entrada. O endpoint de entrada do aplicativo sempre é exposto na porta 443. Para obter mais informações, consulte Configurar regras de entrada HTTPS ou TCP nos Aplicativos de Contêiner do Azure.
Instâncias de Contêiner do Azure, Serviço de Kubernetes do Azure Você define a porta na qual seu aplicativo está escutando durante a criação de contêiner ou pod. Sua imagem de contêiner deve incluir uma estrutura da 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 iniciar. As instruções subsequentes detalham ações como instalar o software necessário, copiar arquivos de aplicativo e configurar o 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
EXPOR Informa ao Docker que o contêiner escuta uma porta especificada em runtime. EXPOSE 5000
COPIAR 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
EXECUTAR Executa um comando dentro da imagem do Docker. Por exemplo, efetuar pull de dependências. O comando é executado uma vez no tempo de build. 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 build do Docker cria imagens do Docker de um Dockerfile e de um contexto. O contexto de um build é o conjunto de arquivos localizados no caminho ou URL especificado. Normalmente, você cria uma imagem a partir da raiz do projeto python e o caminho para o comando de build é "" conforme mostrado no exemplo a seguir.

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

O processo de build pode se referir a qualquer um dos arquivos no contexto. Por exemplo, seu build 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 do 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 do Docker. Para obter mais informações, consulte Gerando arquivos do Docker.

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

Trabalhando com imagens e contêineres do Docker do Python

VS Code e PyCharm

IDEs (ambientes de desenvolvimento integrados), como o VS Code (Visual Studio Code) e o PyCharm, simplificam o desenvolvimento de contêineres do Python integrando tarefas do Docker ao fluxo de trabalho. Com extensões ou plug-ins, essas 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 VS Code e 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 PyCharm, use a CLI do Azure para criar imagens no Azure.)
  • Crie e execute contêineres do Docker de uma imagem existente, uma imagem extraída ou diretamente de um Dockerfile.

  • Execute aplicativos multicontainer 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.

  • (Somente VS Code) Adicione um Dockerfile e arquivos de composição do Docker que são personalizados para seu projeto do 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.

Caso ainda não tenha feito isso, instale as Ferramentas do Azure para VS Code.

Instruções Captura de tela
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 os prompts.

Se você tiver problemas para acessar sua assinatura do Azure, pode ser porque você está por trás de um proxy. Para resolver problemas de conexão, consulte Conexões de Rede no Visual Studio Code.
Captura de tela mostrando a aparência das Ferramentas do Azure uma vez conectado. Captura de tela mostrando a aparência das Ferramentas do Azure se você não estiver conectado.
Etapa 2: Use CTRL + SHIFT + X para abrir Extensões, pesquisar a extensão do Docker e instalar 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 do 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 para executá-la como um contêiner. Captura de tela mostrando como usar a extensão do Docker no VS Code para executar um contêiner de uma imagem do Docker.
Etapa 4: Monitorar a saída de execução do Docker na janela Terminal . Captura de tela mostrando um exemplo de como executar um contêiner no VS Code.

CLI do Azure e CLI do Docker

Você também pode trabalhar com imagens e contêineres do Docker do Python usando a CLI do Azure e a CLI do Docker. O VS Code e o PyCharm têm terminais em que você pode executar esses CLIs.

Use uma CLI quando quiser um controle mais fino sobre argumentos de build e execução e para automação. Por exemplo, o comando a seguir mostra como usar a CLI do Azure 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 valores diferentes 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 Compilar e testar um aplicativo Web Python em contêineres localmente.

Variáveis de ambiente em contêineres

Os projetos do 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 de 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 aprimora a segurança e a manutenção.

Pacotes como python-dotenv geralmente são 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 que os arquivos sejam 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. Passados como argumentos --build-arg com o comando de builddo Docker.
  3. Passados como argumentos --secret com o comando de build do Docker e o back-end do BuildKit.
  4. Passado como argumentos --env ou --env-file com o comando executar do Docker.

As duas primeiras opções têm a mesma desvantagem observada com arquivos .env , ou seja, que você está codificando informações potencialmente confidenciais em uma imagem do Docker. Você pode inspecionar uma imagem 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 criar imagens do Docker de maneira segura que não acabará armazenada na imagem final.

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

Aqui está um exemplo de como passar variáveis de ambiente usando o comando executar a CLI do Docker e usar 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 PyCharm (plug-in do Docker), as ferramentas de 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 do uso de 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 aplicativo como variáveis de ambiente e podem ser 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 as configurações de 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, referenciá-los em variáveis de ambiente. Para obter mais informações, confira Gerenciar segredos nos 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 backup. Esse serviço define as configurações de rede e as informações de conexão (por exemplo, gerando variáveis de ambiente) entre serviços de computação e serviços de backup de destino no plano de gerenciamento.

Exibindo logs de contêiner

Visualize os logs da instância de contêiner para ver as mensagens de diagnóstico geradas pelo código e resolver problemas no código do seu contêiner. Aqui estão várias maneiras de exibir logs ao executar um contêiner em seu ambiente de desenvolvimento:

  • Executando um contêiner com VS Code ou PyCharm, conforme mostrado na seção VS Code e PyCharm, você pode ver logs em janelas de terminal abertas quando o Docker é executado.

  • Caso esteja usando o comando executar a CLI do Docker com o sinalizador -it interativo, visualizará a saída seguindo 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 de seu aplicativo sem a necessidade de configuração. Para obter uma exibição em tempo real dos logs, vá para o Monitoramento - fluxo de logs. Para obter consultas de log e configuração mais detalhadas, consulte os outros recursos em Monitoramento.
Aplicativos de Contêiner do Azure Vá para o recurso de ambiente Diagnosticar e resolver problemas para solucionar problemas de ambiente. Com mais frequência, você deseja visualizar logs de contêiner. No recurso de contêiner, nogerenciamento de Revisão de - , selecione a revisão e, a partir daí, você pode exibir logs do sistema e do console. Para obter consultas de log e configuração mais detalhadas, consulte os recursos em Monitoramento.
Instâncias de Contêiner 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
Aplicativos de Contêiner do Azure az containerapps logs
Instâncias de Contêiner do Azure az container logs

Também há suporte para exibir logs no VS Code. Você deve ter as Ferramentas do Azure para VS Code instaladas. Veja abaixo um exemplo de como exibir os logs dos Aplicativos Web para Contêineres (Serviço de Aplicativo) no VS Code.

Captura de tela mostrando como exibir logs no VS Code para Aplicativos Web para Contêineres.

Próximas etapas