Django containerização: guia passo a passo com Docker
Containerizar Django com Docker resolve o clássico 'funciona na minha máquina'. Neste guia, mostro o passo a passo que uso para empacotar uma aplicação Django, com as armadilhas que encontrei no caminho.
Containerizar Django com Docker resolve o clássico 'funciona na minha máquina'. Neste guia, mostro o passo a passo que uso para empacotar uma aplicação Django, com as armadilhas que encontrei no caminho.
Containerizar uma aplicação Django com Docker resolve o clássico "funciona na minha máquina". Neste guia, mostro o passo a passo que uso para empacotar um projeto Django, com as armadilhas que encontrei no caminho. Pré-requisitos: Docker instalado, um projeto Django funcional e familiaridade básica com terminal.
Passo 1: Crie o Dockerfile
O Dockerfile define a imagem da sua aplicação. Comece com uma imagem oficial do Python, copie o requirements.txt, instale as dependências e depois copie o código. Uma dica: use uma imagem base enxuta como python:3.12-slim para reduzir o tamanho final. Erro comum: copiar todo o código antes de instalar dependências, o que invalida o cache do Docker a cada alteração.
Passo 2: Configure o docker-compose
O docker-compose orquestra os serviços. Você vai precisar de pelo menos dois: a aplicação Django e o banco de dados (PostgreSQL, por exemplo). Defina volumes para o código e para os dados do banco. Dica: use variáveis de ambiente para senhas e chaves secretas, nunca as deixe fixas no compose. Erro comum: esquecer de expor a porta 8000 no serviço web.
Passo 3: Ajuste as configurações do Django
No settings.py, leia as variáveis de ambiente para ALLOWED_HOSTS, DEBUG e DATABASES. Em produção, DEBUG deve ser False. Dica: use a biblioteca django-environ para facilitar. Erro comum: manter DEBUG=True em produção, o que expõe detalhes internos.
Passo 4: Rode migrações e crie o superusuário
Com os containers no ar, execute as migrações: docker-compose exec web python manage.py migrate. Depois, crie o superusuário. Dica: automatize isso em um script de entrada para não esquecer. Erro comum: rodar migrações antes do banco estar pronto, causando falha de conexão.
Passo 5: Teste e itere
Acesse localhost:8000 e verifique se a aplicação responde. Faça alterações no código e veja se o volume reflete as mudanças. Dica: use docker-compose logs para depurar. Erro comum: não reconstruir a imagem após alterar o Dockerfile.
Checklist rápido
- Dockerfile criado com cache otimizado
- docker-compose com serviços web e db
- Variáveis de ambiente configuradas
- Migrações aplicadas
- Aplicação acessível na porta 8000
FAQ
O que é containerização de Django?
É o processo de empacotar a aplicação Django e suas dependências em um container Docker, garantindo que ela rode de forma consistente em qualquer ambiente. Isso inclui o código, o servidor web e as bibliotecas necessárias.
Preciso saber Docker para containerizar Django?
Sim, é necessário entender conceitos básicos como imagens, containers e volumes. O Docker Compose facilita a orquestração, mas sem noções fundamentais o processo fica confuso.
Qual a diferença entre Dockerfile e docker-compose?
O Dockerfile define como construir uma imagem. O docker-compose descreve como múltiplos containers se relacionam e são executados juntos, como a aplicação Django e o banco de dados.
Como lidar com arquivos estáticos em Django containerizado?
Use o comando collectstatic e configure um volume ou um serviço como Nginx para servir os arquivos. Em desenvolvimento, o próprio Django pode servir, mas em produção isso não é recomendado.
Posso usar SQLite em um container Django?
Pode, mas não é ideal para produção. O SQLite armazena dados em arquivo, o que dificulta a persistência e o compartilhamento entre containers. Prefira PostgreSQL ou MySQL em um serviço separado.
Como atualizar a aplicação após mudanças no código?
Se você usa volumes, as alterações no código são refletidas automaticamente. Se não, é preciso reconstruir a imagem com docker-compose build e reiniciar os containers.
Letícia Sampaio Khoury
Editora de Gadgets e Consumo Tech
Testa o gadget no dia a dia real, avalia se vale a grana sem deslumbre de novidade.
Ver todos os artigos →