Introdução
O Docker tornou-se uma mudança de paradigma no mundo do desenvolvimento de software, permitindo aos desenvolvedores empacotar seus aplicativos e dependências em unidades portáteis e autocontidas chamadas contêineres. Neste tutorial, guiaremos você pelo processo de execução de um aplicativo Python em um contêiner Docker, cobrindo os passos essenciais, desde a compreensão do Docker até a implantação do aplicativo em contêiner.
Compreendendo o Docker
O que é o Docker?
Docker é uma plataforma de código aberto que permite aos desenvolvedores construir, implantar e executar aplicações em um ambiente containerizado. Os contêineres são pacotes de software leves, autônomos e executáveis que incluem tudo o que é necessário para executar uma aplicação, incluindo o código, o tempo de execução, as ferramentas do sistema e as bibliotecas. O Docker fornece uma forma de empacotar e distribuir esses contêineres, facilitando a implantação e a gestão de aplicações em diferentes ambientes.
Benefícios do Uso do Docker
- Consistência: Os contêineres Docker garantem que a aplicação execute da mesma forma, independentemente da infraestrutura subjacente.
- Escalabilidade: O Docker facilita a escala de aplicações para cima ou para baixo conforme necessário, adicionando ou removendo contêineres.
- Eficiência: Os contêineres Docker são leves e utilizam menos recursos do que as máquinas virtuais tradicionais, permitindo um uso mais eficiente dos recursos de computação.
- Portabilidade: Os contêineres Docker podem ser facilmente movidos entre diferentes ambientes, como desenvolvimento, testes e produção, sem a necessidade de mudanças complexas de configuração.
Arquitetura do Docker
A arquitetura do Docker baseia-se em um modelo cliente-servidor, onde o cliente Docker se comunica com o daemon Docker, que é responsável por construir, executar e gerenciar os contêineres Docker. Os componentes chave da arquitetura do Docker incluem:
graph LR
A[Cliente Docker] -- Comunica-se com --> B[Daemon Docker]
B -- Gerencia --> C[Imagens Docker]
B -- Gerencia --> D[Contêineres Docker]
B -- Gerencia --> E[Volumes Docker]
B -- Gerencia --> F[Redes Docker]
Começando com o Docker
Para começar com o Docker, você precisará instalar o motor Docker no seu sistema. Você pode baixar e instalar o Docker no site oficial do Docker (https://www.docker.com/get-started). Uma vez instalado, você pode usar a interface de linha de comando (CLI) docker para interagir com o daemon Docker e gerenciar seus contêineres.
Aqui está um exemplo de como executar um contêiner simples "Olá, Mundo!" usando o Docker:
$ docker run hello-world
Este comando puxará a imagem hello-world do registro Docker Hub, criará um novo contêiner e executará a aplicação dentro do contêiner.
Criando um Contêiner para um Aplicativo Python
Construindo uma Imagem Docker para um Aplicativo Python
Para criar um contêiner Docker para um aplicativo Python, você precisará criar uma imagem Docker. Uma imagem Docker é um pacote executável leve e autônomo que inclui tudo o que é necessário para executar o aplicativo, incluindo o código, o tempo de execução, as ferramentas do sistema e as bibliotecas.
Aqui está um exemplo de como criar uma imagem Docker para um aplicativo Python simples:
Crie um novo diretório para seu projeto e navegue até ele no seu terminal.
Crie um novo arquivo chamado
app.pye adicione o seguinte código Python:from flask import Flask app = Flask(__name__) @app.route('/') def hello(): return 'Hello, LabEx!' if __name__ == '__main__': app.run(host='0.0.0.0', port=5000)Crie um novo arquivo chamado
Dockerfilee adicione o seguinte conteúdo:FROM python:3.9-slim WORKDIR /app COPY . /app RUN pip install --no-cache-dir -r requirements.txt CMD ["python", "app.py"]Este
Dockerfiledefine as etapas para construir a imagem Docker para seu aplicativo Python. Ele começa com a imagem basepython:3.9-slim, define o diretório de trabalho para/app, copia os arquivos do aplicativo para o contêiner, instala as dependências necessárias e executa o scriptapp.py.Crie um novo arquivo chamado
requirements.txte adicione a seguinte dependência:flaskConstrua a imagem Docker usando o seguinte comando:
$ docker build -t my-python-app .Este comando constrói a imagem Docker com a tag
my-python-app.
Executando o Aplicativo Python em um Contêiner Docker
Depois de ter a imagem Docker, você pode executar o aplicativo Python em um contêiner Docker usando o seguinte comando:
$ docker run -p 5000:5000 my-python-app
Este comando executa o contêiner my-python-app, mapeando a porta 5000 do contêiner para a porta 5000 do host.
Agora você pode acessar o aplicativo Python abrindo um navegador web e navegando para http://localhost:5000. Você deverá ver a mensagem "Hello, LabEx!" exibida.
Implementando o Contêiner Docker
Publicando a Imagem Docker em um Registro
Para implantar seu contêiner Docker, primeiro você precisará publicar a imagem Docker em um registro, como o Docker Hub ou um registro privado. Isso permite compartilhar e distribuir seu aplicativo para outros ambientes.
Veja como você pode publicar sua imagem my-python-app no Docker Hub:
Crie uma conta no Docker Hub (se ainda não tiver) em https://hub.docker.com.
Faça login no Docker Hub usando o comando
docker login:$ docker loginDigite seu nome de usuário e senha do Docker Hub quando solicitado.
Etiquete sua imagem local
my-python-appcom seu nome de usuário do Docker Hub e uma tag (por exemplo,latest):$ docker tag my-python-app username/my-python-app:latestPublique a imagem etiquetada no Docker Hub:
$ docker push username/my-python-app:latest
Agora, sua imagem Docker está disponível no registro Docker Hub e pode ser puxada e implantada em outros sistemas.
Implementando o Contêiner Docker
Para implantar o contêiner Docker em um ambiente de produção, você pode usar uma plataforma de orquestração de contêineres como o Kubernetes ou o Docker Swarm. Essas plataformas fornecem recursos para escalonamento, balanceamento de carga e gerenciamento do ciclo de vida de seus contêineres.
Aqui está um exemplo de como você pode implantar o contêiner my-python-app usando o Docker Swarm:
Inicialize um cluster Docker Swarm:
$ docker swarm initCrie um novo serviço para o contêiner
my-python-app:$ docker service create --name my-python-app -p 5000:5000 username/my-python-app:latestEste comando cria um novo serviço chamado
my-python-appe executa a imagemusername/my-python-app:latest, mapeando a porta 5000 do contêiner para a porta 5000 do host.Escale o serviço para várias réplicas:
$ docker service scale my-python-app=3Este comando escala o serviço
my-python-apppara 3 réplicas, fornecendo alta disponibilidade e balanceamento de carga para o aplicativo.Monitore o status do serviço:
$ docker service ls $ docker service logs my-python-appEsses comandos permitem que você visualize o status do serviço
my-python-appe inspecione os logs.
Usando uma plataforma de orquestração de contêineres como o Docker Swarm, você pode gerenciar, escalar e implantar seus contêineres Docker facilmente em um ambiente de produção.
Resumo
Ao final deste tutorial, você terá um bom entendimento do Docker e a capacidade de criar um contêiner para seu aplicativo Python. Você aprenderá a construir uma imagem Docker, executar o contêiner e implantar seu aplicativo de forma consistente, confiável e escalável. Dominar o Docker para desenvolvimento Python otimizará seu fluxo de trabalho e tornará seu aplicativo mais portátil e fácil de gerenciar.



