Docker para Rodar Aplicações Python
O Docker resolve isso criando ambientes isolados e replicáveis, chamados de containers, que garantem que seu projeto rode da mesma forma em qualquer máquina.
Neste artigo, vamos abordar:
O que é Docker e como funciona.
Por que usar Docker para projetos Python.
Como criar, configurar e rodar uma aplicação Python com Docker.
Boas práticas e exemplos detalhados.
🔹 1. O que é Docker?
Docker é uma plataforma de virtualização leve que usa containers, que são ambientes isolados que contêm:
Sistema operacional mínimo (baseado em imagens).
Código da aplicação.
Bibliotecas e dependências.
Diferente de máquinas virtuais, os containers compartilham o kernel do host, tornando-os mais rápidos e leves.
🔹 2. Por que usar Docker em Python?
Vantagens:
Isolamento completo: cada projeto pode ter sua própria versão de Python e pacotes.
Consistência: roda exatamente igual em qualquer computador ou servidor.
Fácil deploy: integra facilmente com nuvem, CI/CD e orquestradores como Kubernetes.
Reprodutibilidade: evita o clássico problema “na minha máquina funciona”.
🔹 3. Preparando o projeto Python
Suponha que temos uma aplicação simples app.py:
# app.py
from flask import Flask
app = Flask(__name__)
@app.route("/")
def home():
return "Olá, Docker com Python!"
if __name__ == "__main__":
app.run(host="0.0.0.0", port=5000)
E um arquivo requirements.txt contendo dependências:
Flask==2.3.2
🔹 4. Criando o Dockerfile
O Dockerfile é o roteiro que define como a imagem do seu container será construída.
Exemplo de Dockerfile para nossa aplicação:
# Escolher imagem base com Python
FROM python:3.12-slim
# Definir diretório de trabalho dentro do container
WORKDIR /app
# Copiar arquivos de dependência
COPY requirements.txt .
# Instalar dependências
RUN pip install --no-cache-dir -r requirements.txt
# Copiar todo o código para o container
COPY . .
# Expor porta do container
EXPOSE 5000
# Comando para rodar a aplicação
CMD ["python", "app.py"]
🔹 5. Construindo a imagem Docker
No terminal, dentro da pasta do projeto:
docker build -t minha-aplicacao-python .
-t→ nome da imagem (minha-aplicacao-python)..→ contexto do Docker (pasta atual).
Após a construção, você pode ver a imagem com:
docker images
🔹 6. Rodando o container
Para rodar a aplicação em um container:
docker run -d -p 5000:5000 minha-aplicacao-python
Explicando:
-d→ rodar em segundo plano (detached).-p 5000:5000→ mapeia porta do container para a porta local.
Agora, abra http://localhost:5000 no navegador e verá a mensagem:
Olá, Docker com Python!
🔹 7. Atualizando o projeto
Sempre que houver mudanças no código:
Reconstrua a imagem:
docker build -t minha-aplicacao-python .
Pare o container antigo:
docker ps # lista containers ativos
docker stop <id_container>
Rode a nova versão:
docker run -d -p 5000:5000 minha-aplicacao-python
🔹 8. Boas práticas com Docker
Usar imagens leves (
python:3.12-slim) para reduzir tamanho.Separar dependências do código (
COPY requirements.txtantes do código) → aproveita cache.Versionar imagem com tags:
minha-aplicacao-python:1.0.Ignorar arquivos desnecessários com
.dockerignore(similar ao.gitignore):
__pycache__/
*.pyc
venv/
Variáveis de ambiente: use
ENVou arquivos.envpara configuração do container.
🔹 9. Docker Compose (opcional, mas poderoso)
Se sua aplicação depende de múltiplos serviços (ex: banco de dados), o Docker Compose ajuda a orquestrar.
Exemplo docker-compose.yml:
version: '3'
services:
web:
build: .
ports:
- "5000:5000"
db:
image: postgres:16
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: senha
Com isso, basta rodar:
docker-compose up -d
E todos os serviços são iniciados de forma integrada.
🔹 10. Conclusão
Docker é uma ferramenta indispensável para projetos Python modernos. Ele permite:
Isolamento de ambiente e dependências.
Facilitar o deploy e a colaboração.
Garantir consistência entre desenvolvimento, teste e produção.
Com um Dockerfile bem configurado, você pode rodar qualquer aplicação Python em qualquer lugar, sem se preocupar com o sistema operacional ou conflitos de pacotes.

Comentários
Postar um comentário