{"id":48807192,"url":"https://github.com/earhackerdem/clase3","last_synced_at":"2026-04-14T05:39:24.732Z","repository":{"id":318976957,"uuid":"1071720578","full_name":"earhackerdem/clase3","owner":"earhackerdem","description":"Laravel con Docker para posgresql","archived":false,"fork":false,"pushed_at":"2025-10-16T01:08:25.000Z","size":219,"stargazers_count":0,"open_issues_count":4,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-16T22:57:32.159Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Blade","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/earhackerdem.png","metadata":{"files":{"readme":"README.Docker.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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-07T18:10:34.000Z","updated_at":"2025-10-07T18:10:48.000Z","dependencies_parsed_at":"2025-10-17T14:26:58.483Z","dependency_job_id":"020b81ff-d2ef-4828-929f-b0059f8c6a31","html_url":"https://github.com/earhackerdem/clase3","commit_stats":null,"previous_names":["earhackerdem/clase3"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/earhackerdem/clase3","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/earhackerdem%2Fclase3","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/earhackerdem%2Fclase3/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/earhackerdem%2Fclase3/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/earhackerdem%2Fclase3/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/earhackerdem","download_url":"https://codeload.github.com/earhackerdem/clase3/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/earhackerdem%2Fclase3/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31784254,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-14T02:24:21.117Z","status":"ssl_error","status_checked_at":"2026-04-14T02:24:20.627Z","response_time":153,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":"2026-04-14T05:39:23.908Z","updated_at":"2026-04-14T05:39:24.721Z","avatar_url":"https://github.com/earhackerdem.png","language":"Blade","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🐳 Entorno de Desarrollo Docker para Laravel 12\n\nEste proyecto está configurado para ejecutarse en un entorno de desarrollo completo usando Docker y Docker Compose con PostgreSQL como base de datos.\n\n## 📋 Requisitos Previos\n\n- Docker Engine 20.10+ \n- Docker Compose v2+\n- Git\n\n## 🏗️ Arquitectura de Servicios\n\nEl entorno incluye los siguientes servicios:\n\n- **web (Nginx)**: Servidor web en el puerto 8000\n- **php-fpm**: Procesador PHP-FPM 8.2 con extensiones para Laravel\n- **workspace**: Contenedor de trabajo con PHP CLI, Composer, Node.js y herramientas de desarrollo\n- **postgres**: PostgreSQL 16 en el puerto 5432\n- **redis**: Redis Alpine para caché y sesiones\n\n## 🚀 Inicio Rápido\n\n### Opción 1: Script Automático (Recomendado)\n\n```bash\n# Ejecutar el script de configuración automática\n./docker-setup.sh\n```\n\nEste script se encargará de:\n- ✅ Crear el archivo `.env`\n- ✅ Construir las imágenes Docker\n- ✅ Levantar los contenedores\n- ✅ Instalar dependencias de Composer y npm\n- ✅ Generar la clave de aplicación\n- ✅ Ejecutar migraciones\n- ✅ Construir assets de frontend\n\n### Opción 2: Manual\n\n```bash\n# 1. Copiar archivo de entorno\ncp .env.example .env\n\n# 2. Configurar variables de entorno (opcional)\nnano .env\n\n# 3. Construir y levantar contenedores\ndocker compose -f compose.dev.yaml up -d --build\n\n# 4. Instalar dependencias de Composer\ndocker compose -f compose.dev.yaml exec -u www workspace composer install\n\n# 5. Generar clave de aplicación\ndocker compose -f compose.dev.yaml exec -u www workspace php artisan key:generate\n\n# 6. Ejecutar migraciones\ndocker compose -f compose.dev.yaml exec -u www workspace php artisan migrate\n\n# 7. Instalar dependencias de npm\ndocker compose -f compose.dev.yaml exec -u www workspace bash -c \"source ~/.nvm/nvm.sh \u0026\u0026 npm install\"\n\n# 8. Construir assets\ndocker compose -f compose.dev.yaml exec -u www workspace bash -c \"source ~/.nvm/nvm.sh \u0026\u0026 npm run build\"\n```\n\n## 🌐 Acceso a Servicios\n\nUna vez iniciado, los servicios estarán disponibles en:\n\n- **Aplicación Laravel**: http://localhost:8000\n- **PostgreSQL**: localhost:5432\n  - Base de datos: `laravel`\n  - Usuario: `laravel`\n  - Contraseña: `secret`\n- **Redis**: localhost:6379\n\n## 🛠️ Comandos Útiles\n\n### Gestión de Contenedores\n\n```bash\n# Ver estado de contenedores\ndocker compose -f compose.dev.yaml ps\n\n# Ver logs de todos los servicios\ndocker compose -f compose.dev.yaml logs -f\n\n# Ver logs de un servicio específico\ndocker compose -f compose.dev.yaml logs -f php-fpm\n\n# Detener contenedores (sin eliminarlos)\ndocker compose -f compose.dev.yaml stop\n\n# Iniciar contenedores detenidos\ndocker compose -f compose.dev.yaml start\n\n# Reiniciar contenedores\ndocker compose -f compose.dev.yaml restart\n\n# Detener y eliminar contenedores\ndocker compose -f compose.dev.yaml down\n\n# Detener y eliminar contenedores + volúmenes\ndocker compose -f compose.dev.yaml down -v\n```\n\n### Workspace (Contenedor de Desarrollo)\n\n```bash\n# Acceder al workspace\ndocker compose -f compose.dev.yaml exec -u www workspace bash\n\n# Ejecutar comandos Artisan\ndocker compose -f compose.dev.yaml exec -u www workspace php artisan migrate\ndocker compose -f compose.dev.yaml exec -u www workspace php artisan make:model Product\ndocker compose -f compose.dev.yaml exec -u www workspace php artisan tinker\n\n# Ejecutar Composer\ndocker compose -f compose.dev.yaml exec -u www workspace composer require package/name\ndocker compose -f compose.dev.yaml exec -u www workspace composer update\n\n# Ejecutar npm (requiere cargar NVM)\ndocker compose -f compose.dev.yaml exec -u www workspace bash -c \"source ~/.nvm/nvm.sh \u0026\u0026 npm install\"\ndocker compose -f compose.dev.yaml exec -u www workspace bash -c \"source ~/.nvm/nvm.sh \u0026\u0026 npm run dev\"\ndocker compose -f compose.dev.yaml exec -u www workspace bash -c \"source ~/.nvm/nvm.sh \u0026\u0026 npm run build\"\n\n# Ejecutar tests\ndocker compose -f compose.dev.yaml exec -u www workspace php artisan test\ndocker compose -f compose.dev.yaml exec -u www workspace ./vendor/bin/phpunit\n```\n\n### Base de Datos\n\n```bash\n# Acceder a PostgreSQL CLI\ndocker compose -f compose.dev.yaml exec postgres psql -U laravel -d laravel\n\n# Ejecutar migraciones\ndocker compose -f compose.dev.yaml exec -u www workspace php artisan migrate\n\n# Rollback de migraciones\ndocker compose -f compose.dev.yaml exec -u www workspace php artisan migrate:rollback\n\n# Refrescar base de datos (drop + migrate)\ndocker compose -f compose.dev.yaml exec -u www workspace php artisan migrate:fresh\n\n# Sembrar base de datos\ndocker compose -f compose.dev.yaml exec -u www workspace php artisan db:seed\n\n# Refrescar y sembrar\ndocker compose -f compose.dev.yaml exec -u www workspace php artisan migrate:fresh --seed\n```\n\n### Caché y Optimización\n\n```bash\n# Limpiar caché de configuración\ndocker compose -f compose.dev.yaml exec -u www workspace php artisan config:clear\n\n# Cachear configuración\ndocker compose -f compose.dev.yaml exec -u www workspace php artisan config:cache\n\n# Limpiar caché de rutas\ndocker compose -f compose.dev.yaml exec -u www workspace php artisan route:clear\n\n# Cachear rutas\ndocker compose -f compose.dev.yaml exec -u www workspace php artisan route:cache\n\n# Limpiar todas las cachés\ndocker compose -f compose.dev.yaml exec -u www workspace php artisan optimize:clear\n```\n\n## 🐛 Debugging con Xdebug\n\nEl entorno incluye Xdebug configurado para debugging. Para usarlo:\n\n### Visual Studio Code\n\n1. Instala la extensión \"PHP Debug\"\n2. Crea `.vscode/launch.json`:\n\n```json\n{\n    \"version\": \"0.2.0\",\n    \"configurations\": [\n        {\n            \"name\": \"Listen for Xdebug\",\n            \"type\": \"php\",\n            \"request\": \"launch\",\n            \"port\": 9003,\n            \"pathMappings\": {\n                \"/var/www\": \"${workspaceFolder}\"\n            }\n        }\n    ]\n}\n```\n\n3. Coloca breakpoints en tu código\n4. Inicia el debugger (F5)\n5. Recarga la página en tu navegador\n\n### PhpStorm\n\n1. Ve a Settings → PHP → Servers\n2. Crea un nuevo servidor:\n   - Name: `docker`\n   - Host: `localhost`\n   - Port: `8000`\n   - Debugger: `Xdebug`\n   - Path mappings: `/var/www` → tu carpeta del proyecto\n3. Activa \"Start Listening for PHP Debug Connections\"\n4. Coloca breakpoints y recarga la página\n\n## 📁 Estructura de Docker\n\n```\nproyecto/\n├── docker/\n│   ├── common/\n│   │   └── php-fpm/\n│   │       └── Dockerfile          # Imagen base de PHP-FPM (producción + desarrollo)\n│   ├── development/\n│   │   ├── php-fpm/\n│   │   │   └── entrypoint.sh       # Script de inicialización de PHP-FPM\n│   │   ├── workspace/\n│   │   │   └── Dockerfile          # Imagen del workspace con herramientas dev\n│   │   └── nginx/\n│   │       └── nginx.conf          # Configuración de Nginx\n│   └── production/                  # (Para configuración futura de producción)\n├── compose.dev.yaml                 # Docker Compose para desarrollo\n├── .dockerignore                    # Archivos excluidos de las imágenes\n├── docker-setup.sh                  # Script de inicialización automática\n└── README.Docker.md                 # Este archivo\n```\n\n## ⚙️ Variables de Entorno\n\nLas principales variables en `.env` relacionadas con Docker:\n\n```env\n# Base de Datos PostgreSQL\nDB_CONNECTION=pgsql\nDB_HOST=postgres\nDB_PORT=5432\nDB_DATABASE=laravel\nDB_USERNAME=laravel\nDB_PASSWORD=secret\n\n# Redis\nREDIS_HOST=redis\nREDIS_PORT=6379\n\n# Docker\nNGINX_PORT=8000\nUID=1000\nGID=1000\n\n# Xdebug\nXDEBUG_ENABLED=true\nXDEBUG_HOST=host.docker.internal\nXDEBUG_IDE_KEY=DOCKER\n```\n\n## 🔧 Personalización\n\n### Cambiar el Puerto de Nginx\n\nEdita `.env`:\n```env\nNGINX_PORT=9000\n```\n\nReinicia los contenedores:\n```bash\ndocker compose -f compose.dev.yaml restart web\n```\n\n### Deshabilitar Xdebug (mejora el rendimiento)\n\nEdita `.env`:\n```env\nXDEBUG_ENABLED=false\n```\n\nReconstruye el contenedor:\n```bash\ndocker compose -f compose.dev.yaml up -d --build php-fpm workspace\n```\n\n### Cambiar la Versión de Node.js\n\nEdita `docker/development/workspace/Dockerfile`:\n```dockerfile\nARG NODE_VERSION=20.0.0\n```\n\nReconstruye:\n```bash\ndocker compose -f compose.dev.yaml build workspace\n```\n\n## 🚨 Solución de Problemas\n\n### Los permisos de archivos son incorrectos\n\nAsegúrate de que UID y GID en `.env` coincidan con tu usuario:\n```bash\necho \"UID=$(id -u)\" \u003e\u003e .env\necho \"GID=$(id -g)\" \u003e\u003e .env\n```\n\nReconstruye los contenedores:\n```bash\ndocker compose -f compose.dev.yaml down\ndocker compose -f compose.dev.yaml up -d --build\n```\n\n### PostgreSQL no inicia\n\nVerifica los logs:\n```bash\ndocker compose -f compose.dev.yaml logs postgres\n```\n\nElimina el volumen y vuelve a crear:\n```bash\ndocker compose -f compose.dev.yaml down -v\ndocker compose -f compose.dev.yaml up -d\n```\n\n### Error \"No application encryption key has been specified\"\n\nGenera la clave:\n```bash\ndocker compose -f compose.dev.yaml exec -u www workspace php artisan key:generate\n```\n\n### Los cambios en el código no se reflejan\n\nLimpia la caché de Laravel:\n```bash\ndocker compose -f compose.dev.yaml exec -u www workspace php artisan optimize:clear\n```\n\n## 📚 Recursos\n\n- [Documentación oficial de Docker](https://docs.docker.com/)\n- [Guía de Laravel con Docker](https://docs.docker.com/guides/frameworks/laravel/development-setup/)\n- [Documentación de Laravel 12](https://laravel.com/docs/12.x)\n- [PostgreSQL Docker Hub](https://hub.docker.com/_/postgres)\n\n## 📝 Notas\n\n- Este entorno está optimizado para **desarrollo**, no para producción\n- Los archivos se montan como volúmenes para permitir hot-reload\n- Las dependencias se instalan dentro del contenedor workspace\n- Redis está configurado para sesiones y caché por defecto\n- El workspace incluye Xdebug para debugging\n\n---\n\n**¿Necesitas ayuda?** Abre un issue o consulta la documentación oficial.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fearhackerdem%2Fclase3","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fearhackerdem%2Fclase3","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fearhackerdem%2Fclase3/lists"}