Este é um sistema completo de upload e gerenciamento de arquivos desenvolvido com Django, Docker, Nginx e PostgreSQL, atendendo aos requisitos da Atividade #1.
O projeto está estruturado com 3 containers Docker:
- 🐍 Container Django (Web): Aplicação principal com Gunicorn
- 🌐 Container Nginx: Proxy reverso e servidor de arquivos estáticos/mídia
- 🗄️ Container PostgreSQL: Banco de dados para persistência
- ✅ Upload de arquivos com validação de tipo e tamanho
- ✅ Persistência em volumes Docker (arquivos não se perdem)
- ✅ Interface moderna e responsiva com drag & drop
- ✅ Sistema de busca por nome, descrição ou tipo
- ✅ Paginação dos arquivos enviados
- ✅ Estatísticas de uso (total de arquivos e espaço)
- ✅ Validações de segurança e formato
- ✅ Mensagens de feedback para o usuário
- Backend: Django 5.2 + Gunicorn
- Frontend: HTML5 + CSS3 + JavaScript (Vanilla)
- Banco: PostgreSQL 15
- Web Server: Nginx
- Containerização: Docker + Docker Compose
- Volumes: Persistência de dados e arquivos
django-docker-nginx-postgres/
├── app/ # Aplicação Django
│ ├── core/ # App principal
│ │ ├── models.py # Modelo de arquivos
│ │ ├── views.py # Views da aplicação
│ │ ├── forms.py # Formulários
│ │ └── urls.py # URLs do app
│ ├── myproject/ # Configurações do projeto
│ │ ├── settings.py # Configurações Django
│ │ └── urls.py # URLs principais
│ └── manage.py # Comando Django
├── docker/ # Configurações Docker
│ └── nginx/ # Configuração Nginx
│ └── nginx.conf # Configuração do servidor
├── templates/ # Templates HTML
│ └── upload.html # Interface principal
├── Dockerfile # Imagem Django
├── Dockerfile.nginx # Imagem Nginx
├── docker-compose.yml # Orquestração dos containers
├── entrypoint.sh # Script de inicialização
├── requirements.txt # Dependências Python
└── .env # Variáveis de ambiente
- Docker Desktop instalado e rodando
- Git (para clonar o repositório)
git clone <url-do-repositorio>
cd django-docker-nginx-postgres# Construir e iniciar todos os containers
docker-compose up --build
# Ou em background
docker-compose up -d --build- URL Principal: http://localhost
- Admin Django: http://localhost/admin
- Usuário: admin
- Senha: admin123
POSTGRES_DB=django_files
POSTGRES_USER=django_user
POSTGRES_PASSWORD=django_password_2024
DEBUG=True
SECRET_KEY=django-insecure-production-key-change-this-2024
ALLOWED_HOSTS=localhost,127.0.0.1
CSRF_TRUSTED_ORIGINS=http://localhost,http://127.0.0.1- postgres_data: Dados do banco PostgreSQL
- static_volume: Arquivos estáticos do Django
- media_volume: Arquivos enviados pelos usuários
- Suporte a múltiplos formatos (PDF, DOC, XLS, imagens, etc.)
- Validação de tamanho (máximo 100MB)
- Validação de extensões permitidas
- Campo de descrição opcional
- Lista paginada de arquivos
- Busca por nome, descrição ou tipo
- Estatísticas de uso
- Download direto dos arquivos
- Validação CSRF
- Sanitização de uploads
- Headers de segurança no Nginx
- Usuário não-root nos containers
# Ver logs em tempo real
docker-compose logs -f
# Ver logs de um serviço específico
docker-compose logs -f web
docker-compose logs -f nginx
docker-compose logs -f db
# Parar todos os serviços
docker-compose down
# Parar e remover volumes (⚠️ CUIDADO: apaga dados)
docker-compose down -v
# Reconstruir um serviço específico
docker-compose build web
docker-compose up web
# Acessar container em execução
docker-compose exec web bash
docker-compose exec db psql -U django_user -d django_files- PostgreSQL: Verificação de conectividade
- Nginx: Endpoint
/healthpara verificação - Django: Verificação automática de dependências
- Todos os serviços logam para stdout/stderr
- Logs podem ser visualizados com
docker-compose logs
# Verificar logs
docker-compose logs <nome-do-servico>
# Verificar status dos containers
docker-compose ps
# Reconstruir containers
docker-compose down
docker-compose up --build# Verificar permissões dos volumes
docker-compose exec web ls -la /vol
# Corrigir permissões se necessário
docker-compose exec web chown -R django:django /vol# Verificar se PostgreSQL está rodando
docker-compose exec db pg_isready -U django_user
# Verificar logs do banco
docker-compose logs db- Autenticação de usuários
- Compressão de arquivos
- Backup automático dos volumes
- Monitoramento com Prometheus
- HTTPS com Let's Encrypt
- Cache Redis para performance
- API REST para integração
Este projeto foi desenvolvido para fins educacionais.
Desenvolvido para a Atividade #1 - Sistema de Upload com Docker.
🎯 Objetivo Alcançado: Sistema completo com 3 containers Docker, upload de arquivos, volumes persistentes e interface moderna!