{"id":31807835,"url":"https://github.com/richiiirfc/docker-phalcon-boilerplate","last_synced_at":"2026-05-06T03:34:26.916Z","repository":{"id":315033510,"uuid":"1057193746","full_name":"RichiiiRFC/docker-phalcon-boilerplate","owner":"RichiiiRFC","description":null,"archived":false,"fork":false,"pushed_at":"2025-09-16T08:49:40.000Z","size":5,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-09-16T10:30:38.109Z","etag":null,"topics":["apache","docker","docker-compose","mariadb","phalcon","phalcon-php","php"],"latest_commit_sha":null,"homepage":"","language":"Dockerfile","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/RichiiiRFC.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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-15T11:57:07.000Z","updated_at":"2025-09-16T08:49:44.000Z","dependencies_parsed_at":"2025-09-17T16:16:34.451Z","dependency_job_id":null,"html_url":"https://github.com/RichiiiRFC/docker-phalcon-boilerplate","commit_stats":null,"previous_names":["richiiirfc/docker-phalcon-boilerplate"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/RichiiiRFC/docker-phalcon-boilerplate","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RichiiiRFC%2Fdocker-phalcon-boilerplate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RichiiiRFC%2Fdocker-phalcon-boilerplate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RichiiiRFC%2Fdocker-phalcon-boilerplate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RichiiiRFC%2Fdocker-phalcon-boilerplate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RichiiiRFC","download_url":"https://codeload.github.com/RichiiiRFC/docker-phalcon-boilerplate/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RichiiiRFC%2Fdocker-phalcon-boilerplate/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279006247,"owners_count":26084061,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-11T02:00:06.511Z","response_time":55,"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":["apache","docker","docker-compose","mariadb","phalcon","phalcon-php","php"],"created_at":"2025-10-11T04:38:10.558Z","updated_at":"2025-10-11T04:38:11.687Z","avatar_url":"https://github.com/RichiiiRFC.png","language":"Dockerfile","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Entorno de Desarrollo Phalcon con Docker 🐳\r\n\r\nUn entorno de desarrollo completo basado en Docker para crear y gestionar múltiples aplicaciones web con el framework Phalcon. La arquitectura utiliza Nginx como servidor web, PHP-FPM y un contenedor de Node.js para la gestión del frontend.\r\n\r\n## 🏗️ Arquitectura\r\n\r\n- **Servidor Web:** Nginx (configurado para Virtual Hosts dinámicos)\r\n- **PHP:** Imagen oficial de Phalcon (`phalconphp/cphalcon:v5.9.2-php8.4`) basada en PHP-FPM\r\n- **Base de Datos:** MariaDB\r\n- **Frontend:** Contenedor con Node.js v18 para gestionar dependencias y procesos de build\r\n- **Herramientas Incluidas:** Composer, Phalcon Devtools, NPM/NPX\r\n- **Configuración:** Virtual Hosts automáticos con Nginx para proyectos `*.local`\r\n\r\n## 🚀 Inicio Rápido\r\n\r\n### 1. Crear la Carpeta de Proyectos\r\n\r\nPrimero, crea la carpeta donde estarán tus aplicaciones en la raíz del proyecto:\r\n\r\n```bash\r\nmkdir apps\r\n```\r\n\r\n### 2. Levantar el Entorno\r\n\r\n**Desde la raíz del proyecto** (donde está el `docker-compose.yml`), abre una terminal y ejecuta:\r\n\r\n```bash\r\ndocker-compose up -d\r\n```\r\n\r\nEste comando levantará todos los contenedores (Nginx, PHP-FPM, MariaDB, Node.js) en segundo plano.\r\n\r\n## 📦 Crear un Nuevo Proyecto Phalcon\r\n\r\n### Ejemplo: Crear un proyecto llamado `mi-tienda`\r\n\r\n#### Paso 1: Acceder al Contenedor PHP\r\n\r\n```bash\r\ndocker-compose exec php bash\r\n```\r\n\r\n#### Paso 2: Crear el Proyecto\r\n\r\n```bash\r\nphalcon project mi-tienda\r\n```\r\n\r\nEsto creará una nueva carpeta `mi-tienda` dentro del directorio `apps/`.\r\n\r\n#### Paso 3: Registrar el Dominio Local (Solo una vez por proyecto)\r\n\r\nAunque Nginx maneja los dominios `*.local` automáticamente, tu sistema operativo necesita saber que estos dominios apuntan a tu máquina local.\r\n\r\n**En Windows (PowerShell como Administrador):**\r\n\r\n```powershell\r\nAdd-Content -Path C:\\Windows\\System32\\drivers\\etc\\hosts -Value \"`n127.0.0.1 mi-tienda.local\" -Force\r\n```\r\n\r\n**En Linux/macOS:**\r\n\r\n```bash\r\necho \"127.0.0.1 mi-tienda.local\" | sudo tee -a /etc/hosts\r\n```\r\n\r\n#### Paso 4: Visitar el Proyecto\r\n\r\nAbre tu navegador y visita:\r\n\r\n```\r\nhttp://mi-tienda.local:8080\r\n```\r\n\r\n¡Deberías ver la página de bienvenida de Phalcon! 🎉\r\n\r\n\u003e **💡 Para proyectos existentes:** Si ya tienes proyectos en la carpeta `apps/`, simplemente agrega el dominio al archivo `hosts` (paso 3) y visita `http://nombre-del-proyecto.local:8080`. Gracias a la configuración de Nginx, cualquier dominio `.local` se dirige automáticamente a la carpeta correspondiente.\r\n\r\n## 🛠️ Trabajar con Node.js\r\n\r\n### Acceder al Contenedor Node\r\n\r\n```bash\r\ndocker-compose exec node bash\r\n```\r\n\r\n### Ejemplo de Uso\r\n\r\n```bash\r\n# Navegar a tu proyecto\r\ncd mi-tienda\r\n\r\n# Inicializar package.json\r\nnpm init -y\r\n\r\n# Instalar dependencias\r\nnpm install vite sass\r\n\r\n# Ejecutar scripts\r\nnpm run build\r\n```\r\n\r\nLos archivos generados aparecerán en `apps/mi-tienda` y estarán disponibles para tu aplicación Phalcon.\r\n\r\n## 🗄️ Conexión a la Base de Datos\r\n\r\n### Desde tus Aplicaciones Phalcon (dentro de los contenedores)\r\n\r\n- **Host:** `mariadb-phalcon`\r\n- **Puerto:** `3306`\r\n- **Usuario:** `phalcon`\r\n- **Contraseña:** `phalcon`\r\n- **Base de Datos:** `phalcon_db`\r\n\r\n### Desde Herramientas Externas (DBeaver, HeidiSQL, etc.)\r\n\r\nPara conectar desde tu máquina con herramientas de administración de BD:\r\n\r\n- **Host:** `127.0.0.1`\r\n- **Puerto:** `3307`\r\n- **Usuario:** `phalcon`\r\n- **Contraseña:** `phalcon`\r\n- **Base de Datos:** `phalcon_db`\r\n\r\n## 📋 Comandos Útiles\r\n\r\n### Gestión de Contenedores\r\n\r\n```bash\r\n# Levantar el entorno\r\ndocker-compose up -d\r\n\r\n# Detener y eliminar contenedores\r\ndocker-compose down\r\n\r\n# Ver logs de todos los servicios\r\ndocker-compose logs -f\r\n\r\n# Ver logs de un servicio específico\r\ndocker-compose logs -f php\r\n\r\n# Reconstruir imágenes\r\ndocker-compose build --no-cache\r\n```\r\n\r\n### Acceso a Terminales\r\n\r\n```bash\r\n# Terminal PHP/Phalcon\r\ndocker-compose exec php bash\r\n\r\n# Terminal Node.js\r\ndocker-compose exec node bash\r\n\r\n# Terminal MariaDB (usando Docker Compose)\r\ndocker-compose exec mariadb mysql -u phalcon -p\r\n\r\n# Terminal MariaDB (usando Docker directamente)\r\ndocker exec -it mariadb-phalcon mysql -u phalcon -p\r\n```\r\n\r\n## 🔧 Estructura del Proyecto\r\n\r\n```\r\ntu-carpeta-phalcon/         # Carpeta raíz del proyecto\r\n├── apps/                   # Tus aplicaciones Phalcon (crear manualmente)\r\n│   ├── proyecto1/\r\n│   └── proyecto2/\r\n├── docker/\r\n│   ├── nginx/\r\n│   │   ├── Dockerfile      # Imagen personalizada de Nginx\r\n│   │   └── vhosts.conf     # Configuración de Virtual Hosts\r\n│   ├── php/\r\n│   │   └── Dockerfile      # Imagen personalizada de PHP + Phalcon\r\n│   └── node/               # (Usa imagen oficial de Node.js 18)\r\n├── docker-compose.yml      # Configuración de servicios\r\n├── .gitignore             # apps/ está excluido del repositorio\r\n└── README.md\r\n```\r\n\r\n\u003e **📁 Nota importante:** La carpeta `apps/` no se incluye en el repositorio porque es donde desarrollas tus proyectos personales. Debes crearla manualmente **en la raíz del proyecto** antes de usar el entorno.\r\n\r\n## 🐛 Solución de Problemas\r\n\r\n### El proyecto no se ve en el navegador\r\n1. **Verifica el archivo hosts:** El dominio debe apuntar a 127.0.0.1 (Nginx maneja la redirección automáticamente, pero el SO necesita resolver el dominio)\r\n2. **Contenedores activos:** `docker-compose ps` - todos deben estar \"Up\"\r\n3. **Logs de Nginx:** `docker-compose logs nginx`\r\n4. **Estructura de carpetas:** Verifica que tu proyecto esté en `apps/nombre-proyecto/public/index.php`\r\n\r\n### Error de permisos en archivos\r\n```bash\r\n# Desde el contenedor PHP\r\ndocker-compose exec php chown -R www-data:www-data /var/www/html/apps/tu-proyecto\r\n\r\n# O desde tu máquina (Linux/macOS)\r\nsudo chown -R $(id -u):$(id -g) ./apps/tu-proyecto\r\n```\r\n\r\n### La base de datos no conecta\r\n1. **Estado de MariaDB:** `docker-compose ps` - debe estar \"Up\"\r\n2. **Host correcto:** Usa `mariadb-phalcon` como host desde tus aplicaciones, **no** `localhost` o `127.0.0.1`\r\n3. **Puerto correcto:** `3306` desde contenedores, `3307` desde tu máquina\r\n4. **Credenciales:** Usuario: `phalcon`, Contraseña: `phalcon`, Base de datos: `phalcon_db`\r\n\r\n### Problemas con Node.js\r\n```bash\r\n# Si el contenedor Node no responde\r\ndocker-compose restart node\r\n\r\n# Para instalar dependencias globalmente\r\ndocker-compose exec node npm install -g tu-paquete\r\n```\r\n\r\n---\r\n\r\n**¿Tienes problemas?** Abre un [issue](../../issues) y te ayudaremos 😊","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frichiiirfc%2Fdocker-phalcon-boilerplate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frichiiirfc%2Fdocker-phalcon-boilerplate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frichiiirfc%2Fdocker-phalcon-boilerplate/lists"}