{"id":30865542,"url":"https://github.com/devjpmello/django-docker-nginx-postgres","last_synced_at":"2026-07-12T01:31:05.460Z","repository":{"id":311977188,"uuid":"1045838304","full_name":"devJPMello/django-docker-nginx-postgres","owner":"devJPMello","description":null,"archived":false,"fork":false,"pushed_at":"2025-08-27T20:06:10.000Z","size":9312,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-29T13:56:19.748Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/devJPMello.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-08-27T19:35:08.000Z","updated_at":"2025-08-27T20:06:14.000Z","dependencies_parsed_at":"2025-08-28T05:08:11.974Z","dependency_job_id":null,"html_url":"https://github.com/devJPMello/django-docker-nginx-postgres","commit_stats":null,"previous_names":["devjpmello/django-docker-nginx-postgres"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/devJPMello/django-docker-nginx-postgres","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devJPMello%2Fdjango-docker-nginx-postgres","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devJPMello%2Fdjango-docker-nginx-postgres/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devJPMello%2Fdjango-docker-nginx-postgres/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devJPMello%2Fdjango-docker-nginx-postgres/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/devJPMello","download_url":"https://codeload.github.com/devJPMello/django-docker-nginx-postgres/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devJPMello%2Fdjango-docker-nginx-postgres/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35379590,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-11T02:00:05.354Z","response_time":104,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-09-07T21:22:40.540Z","updated_at":"2026-07-12T01:31:05.454Z","avatar_url":"https://github.com/devJPMello.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🚀 Sistema de Upload de Arquivos com Django + Docker\n\n## 📋 Descrição do Projeto\n\nEste é um sistema completo de upload e gerenciamento de arquivos desenvolvido com **Django**, **Docker**, **Nginx** e **PostgreSQL**, atendendo aos requisitos da Atividade #1.\n\n## 🏗️ Arquitetura\n\nO projeto está estruturado com **3 containers Docker**:\n\n1. **🐍 Container Django (Web)**: Aplicação principal com Gunicorn\n2. **🌐 Container Nginx**: Proxy reverso e servidor de arquivos estáticos/mídia\n3. **🗄️ Container PostgreSQL**: Banco de dados para persistência\n\n## ✨ Funcionalidades\n\n- ✅ **Upload de arquivos** com validação de tipo e tamanho\n- ✅ **Persistência em volumes Docker** (arquivos não se perdem)\n- ✅ **Interface moderna e responsiva** com drag \u0026 drop\n- ✅ **Sistema de busca** por nome, descrição ou tipo\n- ✅ **Paginação** dos arquivos enviados\n- ✅ **Estatísticas** de uso (total de arquivos e espaço)\n- ✅ **Validações** de segurança e formato\n- ✅ **Mensagens de feedback** para o usuário\n\n## 🛠️ Tecnologias Utilizadas\n\n- **Backend**: Django 5.2 + Gunicorn\n- **Frontend**: HTML5 + CSS3 + JavaScript (Vanilla)\n- **Banco**: PostgreSQL 15\n- **Web Server**: Nginx\n- **Containerização**: Docker + Docker Compose\n- **Volumes**: Persistência de dados e arquivos\n\n## 📁 Estrutura do Projeto\n\n```\ndjango-docker-nginx-postgres/\n├── app/                          # Aplicação Django\n│   ├── core/                     # App principal\n│   │   ├── models.py            # Modelo de arquivos\n│   │   ├── views.py             # Views da aplicação\n│   │   ├── forms.py             # Formulários\n│   │   └── urls.py              # URLs do app\n│   ├── myproject/               # Configurações do projeto\n│   │   ├── settings.py          # Configurações Django\n│   │   └── urls.py              # URLs principais\n│   └── manage.py                # Comando Django\n├── docker/                       # Configurações Docker\n│   └── nginx/                   # Configuração Nginx\n│       └── nginx.conf           # Configuração do servidor\n├── templates/                    # Templates HTML\n│   └── upload.html              # Interface principal\n├── Dockerfile                    # Imagem Django\n├── Dockerfile.nginx             # Imagem Nginx\n├── docker-compose.yml           # Orquestração dos containers\n├── entrypoint.sh                # Script de inicialização\n├── requirements.txt              # Dependências Python\n└── .env                         # Variáveis de ambiente\n```\n\n## 🚀 Como Executar\n\n### Pré-requisitos\n\n- Docker Desktop instalado e rodando\n- Git (para clonar o repositório)\n\n### 1. Clone o repositório\n\n```bash\ngit clone \u003curl-do-repositorio\u003e\ncd django-docker-nginx-postgres\n```\n\n### 2. Execute a aplicação\n\n```bash\n# Construir e iniciar todos os containers\ndocker-compose up --build\n\n# Ou em background\ndocker-compose up -d --build\n```\n\n### 3. Acesse a aplicação\n\n- **URL Principal**: http://localhost\n- **Admin Django**: http://localhost/admin\n  - **Usuário**: admin\n  - **Senha**: admin123\n\n## 🔧 Configurações\n\n### Variáveis de Ambiente (.env)\n\n```env\nPOSTGRES_DB=django_files\nPOSTGRES_USER=django_user\nPOSTGRES_PASSWORD=django_password_2024\nDEBUG=True\nSECRET_KEY=django-insecure-production-key-change-this-2024\nALLOWED_HOSTS=localhost,127.0.0.1\nCSRF_TRUSTED_ORIGINS=http://localhost,http://127.0.0.1\n```\n\n### Volumes Docker\n\n- **postgres_data**: Dados do banco PostgreSQL\n- **static_volume**: Arquivos estáticos do Django\n- **media_volume**: Arquivos enviados pelos usuários\n\n## 📊 Funcionalidades da Aplicação\n\n### Upload de Arquivos\n- Suporte a múltiplos formatos (PDF, DOC, XLS, imagens, etc.)\n- Validação de tamanho (máximo 100MB)\n- Validação de extensões permitidas\n- Campo de descrição opcional\n\n### Gerenciamento\n- Lista paginada de arquivos\n- Busca por nome, descrição ou tipo\n- Estatísticas de uso\n- Download direto dos arquivos\n\n### Segurança\n- Validação CSRF\n- Sanitização de uploads\n- Headers de segurança no Nginx\n- Usuário não-root nos containers\n\n## 🐳 Comandos Docker Úteis\n\n```bash\n# Ver logs em tempo real\ndocker-compose logs -f\n\n# Ver logs de um serviço específico\ndocker-compose logs -f web\ndocker-compose logs -f nginx\ndocker-compose logs -f db\n\n# Parar todos os serviços\ndocker-compose down\n\n# Parar e remover volumes (⚠️ CUIDADO: apaga dados)\ndocker-compose down -v\n\n# Reconstruir um serviço específico\ndocker-compose build web\ndocker-compose up web\n\n# Acessar container em execução\ndocker-compose exec web bash\ndocker-compose exec db psql -U django_user -d django_files\n```\n\n## 🔍 Monitoramento\n\n### Health Checks\n- **PostgreSQL**: Verificação de conectividade\n- **Nginx**: Endpoint `/health` para verificação\n- **Django**: Verificação automática de dependências\n\n### Logs\n- Todos os serviços logam para stdout/stderr\n- Logs podem ser visualizados com `docker-compose logs`\n\n## 🚨 Solução de Problemas\n\n### Container não inicia\n```bash\n# Verificar logs\ndocker-compose logs \u003cnome-do-servico\u003e\n\n# Verificar status dos containers\ndocker-compose ps\n\n# Reconstruir containers\ndocker-compose down\ndocker-compose up --build\n```\n\n### Problemas de permissão\n```bash\n# Verificar permissões dos volumes\ndocker-compose exec web ls -la /vol\n\n# Corrigir permissões se necessário\ndocker-compose exec web chown -R django:django /vol\n```\n\n### Banco não conecta\n```bash\n# Verificar se PostgreSQL está rodando\ndocker-compose exec db pg_isready -U django_user\n\n# Verificar logs do banco\ndocker-compose logs db\n```\n\n## 📈 Melhorias Futuras\n\n- [ ] Autenticação de usuários\n- [ ] Compressão de arquivos\n- [ ] Backup automático dos volumes\n- [ ] Monitoramento com Prometheus\n- [ ] HTTPS com Let's Encrypt\n- [ ] Cache Redis para performance\n- [ ] API REST para integração\n\n## 📝 Licença\n\nEste projeto foi desenvolvido para fins educacionais.\n\n## 👨‍💻 Autor\n\nDesenvolvido para a Atividade #1 - Sistema de Upload com Docker.\n\n---\n\n**🎯 Objetivo Alcançado**: Sistema completo com 3 containers Docker, upload de arquivos, volumes persistentes e interface moderna!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevjpmello%2Fdjango-docker-nginx-postgres","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdevjpmello%2Fdjango-docker-nginx-postgres","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevjpmello%2Fdjango-docker-nginx-postgres/lists"}