Skip to content

Feature/docker dev setup#38

Open
earhackerdem wants to merge 5 commits intomainfrom
feature/docker-dev-setup
Open

Feature/docker dev setup#38
earhackerdem wants to merge 5 commits intomainfrom
feature/docker-dev-setup

Conversation

@earhackerdem
Copy link
Copy Markdown
Owner

@earhackerdem earhackerdem commented Jul 9, 2025

🐋 Configuración Completa de Docker para Desarrollo y Producción

📋 Resumen

Este PR implementa una configuración completa de Docker para el proyecto CronosMaticStore, proporcionando entornos de desarrollo y producción completamente funcionales con todas las dependencias necesarias.

🎯 Características Implementadas

Entornos Docker

  • Desarrollo: Laravel + Vite con hot reload en puertos 3000/5173
  • Producción: Configuración optimizada con Nginx + Supervisor en puerto 8000
  • Base de datos: MariaDB 10.11 con datos de prueba
  • Cache: Redis para sesiones y caché de Laravel
  • Gestión DB: phpMyAdmin para administración de base de datos

Problemas Resueltos

  • ❌ Error "Class Redis not found" → ✅ Extensión Redis instalada automáticamente
  • ❌ Warnings de extensiones PHP duplicadas → ✅ Configuración PHP limpia
  • ❌ Errores de seeders por duplicados → ✅ Manejo robusto de errores
  • ❌ Problemas de timing entre servicios → ✅ Healthchecks y dependencias configuradas
  • ❌ Vite no funcionando en Docker → ✅ Configuración optimizada para contenedores

🚀 Nuevas Funcionalidades

Script de Setup Mejorado

./docker-setup.sh dev          # Entorno de desarrollo
./docker-setup.sh dev-full     # Desarrollo + phpMyAdmin
./docker-setup.sh prod         # Entorno de producción
./docker-setup.sh phpmyadmin   # Solo phpMyAdmin
./docker-setup.sh help         # Ayuda

Comandos Docker Directos

docker compose up -d dev                    # Solo desarrollo
docker compose up -d dev phpmyadmin         # Desarrollo completo
docker compose up -d app                    # Producción

📦 Archivos Añadidos/Modificados

Nuevos Archivos:

  • Dockerfile - Configuración de producción
  • Dockerfile.dev - Configuración de desarrollo
  • docker-compose.yml - Orquestación de servicios
  • docker-setup.sh - Script de configuración automática
  • DOCKER.md - Documentación completa
  • .dockerignore - Optimización de contexto de build
  • docker/ - Directorio de configuraciones
    • dev-start.sh - Script de inicio robusto
    • php/custom.ini - Configuración PHP optimizada
    • nginx.conf - Configuración Nginx
    • supervisord.conf - Configuración Supervisor
    • mysql/init.sql - Inicialización de DB

Archivos Modificados:

  • vite.config.ts - Configuración para Docker
  • .gitignore - Exclusiones Docker
  • package-lock.json - Dependencias actualizadas

🌐 URLs de Acceso

Servicio URL Credenciales
Desarrollo http://localhost:3000 -
Vite (Hot Reload) http://localhost:5173 -
Producción http://localhost:8000 -
phpMyAdmin http://localhost:8080 cronosmatic / cronosmatic_password
MariaDB localhost:3306 cronosmatic / cronosmatic_password
Redis localhost:6379 -

🔧 Configuración Técnica

Desarrollo:

  • PHP 8.2 + Laravel 12
  • Node.js 20 para Vite
  • Hot reload habilitado
  • Debugging activado
  • Volúmenes para desarrollo en vivo

Producción:

  • Nginx como servidor web
  • Supervisor para gestión de procesos
  • Configuración optimizada
  • Assets compilados

Base de Datos:

  • MariaDB 10.11
  • Migraciones automáticas
  • Seeders con manejo de errores
  • Datos de prueba incluidos

🛡️ Mejoras de Robustez

  • Healthchecks para todos los servicios
  • Dependencias configuradas correctamente
  • Manejo de errores en scripts de inicio
  • Verificación de puertos antes de iniciar servicios
  • Limpieza automática de procesos anteriores

📚 Documentación

  • DOCKER.md: Guía completa de uso
  • Troubleshooting: Soluciones a problemas comunes
  • Comandos útiles: Referencia rápida
  • Configuración: Explicación detallada

🧪 Testing

  • ✅ Entorno de desarrollo funcional
  • ✅ Hot reload operativo
  • ✅ Base de datos conectada
  • ✅ Redis funcionando
  • ✅ phpMyAdmin accesible
  • ✅ Migraciones y seeders ejecutándose
  • ✅ Assets servidos correctamente

🎉 Beneficios

  1. Configuración en un comando: ./docker-setup.sh dev-full
  2. Entorno consistente: Mismo ambiente para todo el equipo
  3. Desarrollo ágil: Hot reload y debugging habilitado
  4. Gestión fácil: phpMyAdmin incluido
  5. Producción lista: Configuración optimizada disponible
  6. Documentación completa: Guías paso a paso

🔄 Próximos Pasos

Una vez mergeado este PR:

  1. El equipo puede usar ./docker-setup.sh dev-full para desarrollo
  2. Se puede desplegar en producción con ./docker-setup.sh prod
  3. La gestión de DB es sencilla vía phpMyAdmin
  4. El entorno está listo para CI/CD

@github-actions
Copy link
Copy Markdown

github-actions bot commented Jul 9, 2025

File Coverage Branches Missing
All files 50% 72%
ziggy.js 0% 0% 1-4
test-utils.tsx 0% 0% 1-98
add-to-cart-button.tsx 96% 93% 40
address-form.tsx 81% 64% 133 178 217 242 292 306
app-content.tsx 50% 50% 13-18
app-header.tsx 0% 0% 1-200
app-shell.tsx 63% 50% 14-15
breadcrumbs.tsx 41% 50% 10-30
delete-user.tsx 0% 0% 1-89
heading-small.tsx 0% 0% 1-8
heading.tsx 0% 0% 1-8
icon.tsx 75% 100% 10-11
input-error.tsx 0% 0% 1-10
nav-footer.tsx 57% 50% 18-28
nav-user.tsx 47% 33% 20-32
text-link.tsx 0% 0% 1-19
user-info.tsx 58% 100% 6-22
user-menu-content.tsx 58% 100% 13-45
alert.tsx 0% 100% 2-64
avatar.tsx 52% 100% 6-49
badge.tsx 75% 50%
breadcrumb.tsx 51% 100% 7-99
button.tsx 75% 50%
card.tsx 84% 100% 38-46 58-66
collapsible.tsx 0% 0% 1-29
dialog.tsx 95% 100% 13-17 25-29
dropdown-menu.tsx 66% 100% 13-19 52-58 83-162 177-237
icon.tsx 0% 100% 8-14
navigation-menu.tsx 0% 100% 2-156
placeholder-pattern.tsx 0% 0% 1-20
select.tsx 90% 100% 13-17 82-93 119-130
sheet.tsx 51% 100% 7-126
sidebar.tsx 59% 63% 48-49 76-85 91 97-104 167-179 182-204 223 231 235 266-268 277-300 316-328 352-364 412-433 525-528 543-694
skeleton.tsx 55% 100% 3-11
tabs.tsx 0% 0% 1-51
toggle-group.tsx 0% 0% 1-69
toggle.tsx 0% 100% 2-43
CartContext.tsx 54% 100% 26-39 50-148 152-157
use-addresses.ts 51% 54% 29-32 52-54 58-60 70-85 89-104 108-131
use-appearance.tsx 0% 0% 1-29
use-initials.tsx 59% 100% 4-15
use-mobile-navigation.ts 66% 100% 4-8
use-mobile.tsx 93% 100% 12-13
auth-layout.tsx 0% 0% 1-9
app-header-layout.tsx 0% 0% 1-14
auth-card-layout.tsx 0% 0% 1-36
auth-simple-layout.tsx 0% 0% 1-34
auth-split-layout.tsx 0% 0% 1-45
layout.tsx 0% 0% 1-69
address-api.ts 44% 50% 17-27 59-63 66-70 73-75 78-81 84-87 90-92 95-98
api.ts 57% 100% 14-39 42-48 51-62 65-72 75-86 89-99 102-109 112-119 125-126 132-133 140-145 148-165 168-175 178-185
axios.ts 0% 0% 1-51
utils.ts 77% 100% 9-13
dashboard.tsx 0% 0% 1-35
welcome.tsx 0% 100% 2-780
Index.tsx 87% 82% 30 41-53 60-61
Index.tsx 0% 0% 1-900
Confirmation.tsx 0% 100% 2-139
Index.tsx 0% 0% 1-381
UserOrderDetailPage.tsx 0% 0% 1-230
UserOrdersPage.tsx 0% 0% 1-239
confirm-password.tsx 0% 100% 2-60
forgot-password.tsx 0% 100% 2-63
login.tsx 0% 0% 1-110
register.tsx 0% 0% 1-119
reset-password.tsx 0% 0% 1-98
verify-email.tsx 0% 100% 2-41
addresses.tsx 0% 0% 1-195
password.tsx 0% 0% 1-128
profile.tsx 0% 100% 2-127

Minimum allowed coverage is 70%

Generated by 🐒 cobertura-action against 6828523

- Add Dockerfile for production environment with PHP 8.2, Nginx, and Supervisor
- Add Dockerfile.dev for development environment with Node.js and Redis support
- Add docker-compose.yml with services for app, database, Redis, and phpMyAdmin
- Add comprehensive DOCKER.md documentation with setup instructions
- Add docker-setup.sh script for easy environment setup
- Add .dockerignore to optimize build context
- Add dev-start.sh script with database wait logic and process management
- Add custom.ini for PHP configuration without duplicate extensions
- Add nginx.conf for web server configuration
- Add supervisord configurations for production and development
- Add mysql init.sql for database initialization
- Implement robust startup script with cleanup and verification
- Add server configuration with host 0.0.0.0 for external access
- Configure HMR (Hot Module Replacement) for localhost
- Set explicit port 5173 for consistent development experience
- Enable proper asset serving in containerized environment
- Update .gitignore to exclude Docker-related temporary files
- Update package-lock.json with latest dependency resolutions
- Ensure consistent development environment setup
- Add phpMyAdmin service management to docker-setup.sh script
- Add support for multiple environment commands (dev, dev-full, prod, phpmyadmin)
- Update DOCKER.md documentation with phpMyAdmin instructions
- Add convenient commands for starting development environment with database management
- Improve script usability with help command and better parameter handling

Usage examples:
- ./docker-setup.sh dev-full    # Start dev environment with phpMyAdmin
- ./docker-setup.sh phpmyadmin  # Start only phpMyAdmin
- docker compose up -d dev phpmyadmin  # Alternative command
@earhackerdem earhackerdem force-pushed the feature/docker-dev-setup branch from 4e768c8 to 6828523 Compare July 18, 2025 16:52
earhackerdem added a commit that referenced this pull request Oct 12, 2025
…king

This commit fixes all blocking issues found in PR #38 that would prevent
the Docker configuration from functioning correctly.

## Critical Fixes

### 1. Dockerfile (Production) - Lines 19-20, 59
**Problem**: Missing Redis PHP extension and incorrect PHP config path
- Add Redis PHP extension installation via PECL
- Fix PHP config path from `docker/php.ini` to `docker/php/custom.ini`
**Impact**: Resolves "Class Redis not found" error in production

### 2. docker-setup.sh - Line 64
**Problem**: References non-existent `docker.env` file
- Change from `cp docker.env .env` to `cp .env.example .env`
**Impact**: Setup script now works out of the box

### 3. docker.env - NEW FILE
**Problem**: File was in .gitignore but never committed
- Create docker.env with Docker-optimized environment variables
- Configure for MariaDB (host=db) and Redis (host=redis)
- Include all necessary Laravel configuration
**Impact**: Users have a working Docker environment template

### 4. DOCKER.md - Lines 31-33, 42-43
**Problem**: Inconsistent database credentials documentation
- Update password from `cronosmatic123` to `cronosmatic_password`
- Update database name from `cronosmatic_store` to `cronosmatic`
**Impact**: Documentation matches actual docker-compose.yml config

## Verification

All fixes have been tested and verified:
✅ Development Dockerfile builds successfully
✅ Production Dockerfile builds successfully
✅ Redis extension installed and loaded in both images
✅ PHP config file copied correctly in both images
✅ docker-compose.yml validates without errors
✅ MariaDB and Redis services start and pass health checks

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant