Voltar ao blog

Containerizar um aplicativo Python usando o Docker

Containerizar um aplicativo Python usando o Docker

Docker é uma solução gratuita e de código aberto para desenvolver, implantar e gerenciar aplicativos em virtualização leve de nível de sistema operacional. Neste guia, demonstraremos a criação de um Python aplicativo dentro de um contêiner Docker.

Pré-requisitos

Para realizar as etapas demonstradas neste guia, você precisará dos seguintes componentes:

Contêineres Docker

Ao executar vários programas no mesmo ambiente, as coisas podem (e vão) quebrar. Quanto mais programas você adiciona, mais instável ele se torna. Pode não ser um grande problema para pessoas comuns. No entanto, quando se trata de aplicações de missão crítica, pode haver consequências graves.

Quanto mais aplicativos são introduzidos no sistema, maior é a superfície de ataque. Um único aplicativo comprometido pode facilmente levar à queda de todo o sistema.

Para resolver esses problemas, podemos usar contêineres Docker para sandboxing em nível de software:

  • Os aplicativos dentro do contêiner terão acesso limitado aos arquivos.

  • Os aplicativos em contêineres não podem ver outros processos em execução no sistema.

  • O contêiner pode receber uma quantidade específica de recursos de hardware.

  • As portas de rede de um contêiner não são expostas para o exterior.

  • Empacotamento consistente de quase qualquer coisa em ambientes locais/de produção.

Para demonstrar, vamos construir um servidor Python simples dentro de um contêiner Docker, transformar o contêiner em uma imagem e implantar a imagem em um ambiente de produção fictício.

Passo 1 – Configuração do Sistema de Arquivos

Para hospedar o projeto, primeiro, vamos criar um diretório dedicado:

Dentro do diretório, crie um subdiretório src para armazenar nosso código:

Passo 2 – Construindo o Servidor Python

Nesta etapa, vamos criar um servidor HTTP simples em Python. Crie o arquivo server.py:

Abra-o em um editor de texto:

Insira o seguinte código Python:

Aqui,

  • Estamos usando a classe HTTPServer e solicitando um manipulador da biblioteca padrão do Python, mantendo o programa simples.

  • A função run inicia uma instância do HTTPserver.

  • Como sugerem os argumentos de server_address, o servidor escutará qualquer conexão de entrada na porta 8080.

Agora, vamos verificar se o servidor está funcionando como esperado. Inicie o servidor:

A partir de um novo terminal, podemos usar curl para enviar uma requisição ao servidor:

Alternativamente, você pode acessar o link em um navegador web:

Passo 3 – Criando um Dockerfile

Um Dockerfile  contém as instruções necessárias para gerar uma imagem Docker. As instruções no arquivo são seguidas sequencialmente. Saiba mais sobre o Dockerfile.

Crie um novo Dockerfile para o nosso projeto:

Agora, vamos introduzir os códigos necessários nele. Abra-o em um editor de texto:

Insira o seguinte código:

Aqui,

  • Qualquer Dockerfile deve começar com a FROM diretiva. No nosso caso, estamos declarando o Python como a base da imagem Docker.

  • A ENV SRC_DIR diretiva especifica a localização do diretório do contêiner.

  • A COPY diretiva copia os arquivos do diretório src que atualmente hospeda o servidor Python.

  • A variável PYTHONBUFFERED=1 especifica que o Python irá imprimir e registrar a saída diretamente no STDOUT. Caso contrário, os logs não seriam enviados para nenhum buffer.

  • A CMD diretiva especifica um comando padrão para executar ao iniciar o contêiner. Neste caso, estamos usando a diretiva para iniciar nosso servidor Python.

Passo 4 – Geração da Imagem Docker

Com o Dockerfile pronto, agora podemos gerar uma imagem. Execute o seguinte comando Docker para iniciar o processo:

Aqui,

  • A -t flag é usada para rotular nossa imagem Docker como python_server.

  • O Docker fará o download de todos os componentes necessários e os combinará em uma imagem.

Passo 5 – Executando a Imagem

A imagem está pronta para implantação. Podemos executá-la usando o seguinte comando:

Aqui, estamos encaminhando a porta 8080 da máquina local para a imagem Docker usando a -p flag.

Podemos validar facilmente se o servidor está ativo e em execução usando o curl:

Passo 6 – Terminando o Servidor

No terminal, pressione “Ctrl + C” para encerrar o processo do Docker:

Passo 7 – Exportando e Importando a Imagem Docker

Agora temos uma imagem Docker funcional hospedando nosso servidor Python. Com a ajuda dos recursos de exportação e importação do Docker, podemos migrá-la para qualquer outro sistema.

Primeiro, verifique a lista de imagens Docker no sistema atual:

Nosso alvo é a imagem Docker python_server que acabamos de criar. O seguinte comando irá exportá-la como um arquivo TAR:

Após transferir o arquivo python_server.tar para a máquina de destino, use o seguinte comando para importar a imagem Docker:

Considerações Finais

Neste guia, demonstramos a criação de uma imagem Docker a partir de uma aplicação Python. Criamos um servidor web Python simples e construímos uma imagem Docker a partir dele. A imagem Docker agora pode ser implantada em qualquer ambiente, garantindo um comportamento consistente.

Interessado em aprender mais sobre o Docker? Confira os seguintes guias:

Boa Computação!

author

Preslav Dobrev

Autor · CloudSigma

Preslav Dobrev é um designer criativo na CloudSigma, focado na construção de uma identidade empresarial consistente por meio de canais de marketing tradicionais e inovadores. Ele é hábil em combinar a visão artística com o marketing estratégico para criar narrativas de marca impactantes.

Comentários

Nenhum comentário ainda. Seja o primeiro.