diff --git a/Docker/nginx/nginx.conf b/Docker/nginx/nginx.conf index 4ce5974..6419d9d 100644 --- a/Docker/nginx/nginx.conf +++ b/Docker/nginx/nginx.conf @@ -1,7 +1,7 @@ server { listen 80; server_name _; - root /var/www/golscontrols/public; + root /var/www/pdv.backend/public; index index.php index.html; # Logging @@ -17,7 +17,7 @@ server { location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; - fastcgi_pass golscontrols:9000; + fastcgi_pass pdv-backend:9000; fastcgi_index index.php; # Timeouts importantes para evitar errores 500 @@ -45,17 +45,17 @@ server { # Handle storage files (Laravel storage link) location /storage { - alias /var/www/golscontrols/storage/app; + alias /var/www/pdv.backend/storage/app; try_files $uri =404; } location /profile { - alias /var/www/golscontrols/storage/app/profile; + alias /var/www/pdv.backend/storage/app/profile; try_files $uri =404; } location /images { - alias /var/www/golscontrols/storage/app/images; + alias /var/www/pdv.backend/storage/app/images; try_files $uri =404; } diff --git a/docker-compose.yml b/docker-compose.yml index 3b1c760..9c76aa0 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,9 +1,9 @@ services: - repuve-backend: + pdv-backend: build: context: . - dockerfile: dockerfile.dev - working_dir: /var/www/repuve-v1 + dockerfile: dockerfile + working_dir: /var/www/pdv.backend environment: - DB_HOST=mysql - DB_USERNAME=${DB_USERNAME} @@ -11,27 +11,25 @@ services: - DB_DATABASE=${DB_DATABASE} - DB_PORT=${DB_PORT} volumes: - - ./:/var/www/repuve-v1 - - /var/www/repuve-v1/vendor + - ./:/var/www/pdv.backend + - /var/www/pdv.backend/vendor networks: - - repuve-network + - pdv-network depends_on: mysql: condition: service_healthy - redis: - condition: service_healthy nginx: image: nginx:alpine ports: - "${NGINX_PORT}:80" volumes: - - ./public:/var/www/repuve-v1/public + - ./public:/var/www/pdv.backend/public - ./Docker/nginx/nginx.conf:/etc/nginx/conf.d/default.conf networks: - - repuve-network + - pdv-network depends_on: - - repuve-backend + - pdv-backend mysql: image: mysql:8.0 @@ -45,7 +43,7 @@ services: volumes: - mysql_data:/var/lib/mysql networks: - - repuve-network + - pdv-network healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost"] timeout: 15s @@ -61,27 +59,12 @@ services: depends_on: - mysql networks: - - repuve-network - - redis: - image: redis:alpine - ports: - - "${REDIS_PORT}:6379" - volumes: - - redis_data:/data - networks: - - repuve-network - healthcheck: - test: ["CMD", "redis-cli", "ping"] - timeout: 5s - retries: 5 + - pdv-network volumes: mysql_data: driver: local - redis_data: - driver: local networks: - repuve-network: + pdv-network: driver: bridge diff --git a/dockerfile b/dockerfile index 7cee8a0..380cb05 100644 --- a/dockerfile +++ b/dockerfile @@ -1,8 +1,8 @@ FROM php:8.3-fpm -RUN mkdir -p /var/www/repuve-v1 +RUN mkdir -p /var/www/pdv.backend -WORKDIR /var/www/repuve-v1 +WORKDIR /var/www/pdv.backend RUN apt-get update && apt-get install -y\ git \ @@ -26,15 +26,15 @@ RUN composer install --optimize-autoloader --no-interaction --no-scripts COPY . . -COPY entrypoint-dev.sh /usr/local/bin/entrypoint-dev.sh -RUN chmod +x /usr/local/bin/entrypoint-dev.sh +COPY entrypoint.sh /usr/local/bin/entrypoint.sh +RUN chmod +x /usr/local/bin/entrypoint.sh RUN mkdir -p storage/app/keys storage/logs bootstrap/cache -RUN chown -R www-data:www-data /var/www/repuve-v1/storage /var/www/repuve-v1/bootstrap/cache -RUN chmod -R 775 /var/www/repuve-v1/storage /var/www/repuve-v1/bootstrap/cache +RUN chown -R www-data:www-data /var/www/pdv.backend/storage /var/www/pdv.backend/bootstrap/cache +RUN chmod -R 775 /var/www/pdv.backend/storage /var/www/pdv.backend/bootstrap/cache EXPOSE 9000 -ENTRYPOINT ["/usr/local/bin/entrypoint-dev.sh"] +ENTRYPOINT ["/usr/local/bin/entrypoint.sh"] CMD ["php-fpm"] diff --git a/entrypoint-dev.sh b/entrypoint-dev.sh deleted file mode 100644 index 932cb96..0000000 --- a/entrypoint-dev.sh +++ /dev/null @@ -1,115 +0,0 @@ -#!/bin/bash -set -e - -git config --global --add safe.directory /var/www/repuve-v1 - -echo "=== Iniciando entrypoint DESARROLLO ===" - -# Variables desde Docker environment -DB_HOST=${DB_HOST:-mysql} -DB_USERNAME=${DB_USERNAME:-root} -DB_PASSWORD=${DB_PASSWORD:-} -DB_DATABASE=${DB_DATABASE:-laravel} -MAX_RETRIES=30 -RETRY_COUNT=0 - -echo "Configuración de BD: Host=${DB_HOST}, Usuario=${DB_USERNAME}, Base=${DB_DATABASE}" - -# Función para verificar conectividad con MySQL usando PHP -check_mysql() { - php -r " - try { - \$pdo = new PDO('mysql:host=${DB_HOST};port=3306', '${DB_USERNAME}', '${DB_PASSWORD}'); - \$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); - exit(0); - } catch (Exception \$e) { - exit(1); - } - " -} - -# Esperar a que MySQL esté disponible -echo "Esperando conexión a MySQL..." -until check_mysql; do - RETRY_COUNT=$((RETRY_COUNT + 1)) - if [ $RETRY_COUNT -ge $MAX_RETRIES ]; then - echo "ERROR: No se pudo conectar a MySQL después de $MAX_RETRIES intentos" - exit 1 - fi - echo "Intento $RETRY_COUNT/$MAX_RETRIES - Esperando a MySQL..." - sleep 2 -done - -echo "✓ MySQL está disponible" - -# Comandos de inicialización para desarrollo -echo "Ejecutando comandos de inicialización de DESARROLLO..." - -# Instalar dependencias (incluye dev) -echo "Instalando dependencias de desarrollo..." -composer install --optimize-autoloader --no-interaction - -echo "Ejecutando package:discover..." -php artisan package:discover --ansi - -echo "Creando enlaces simbólicos..." -php artisan storage:link --force || true - -echo "Ejecutando configuración de desarrollo..." -composer run env:dev - -echo "Creando directorio de claves Passport..." -mkdir -p storage/app/keys - -echo "Generando claves de Passport..." -php artisan passport:keys --force || true - -# Verificar que las claves se crearon -if [ ! -f "storage/app/keys/oauth-private.key" ] || [ ! -f "storage/app/keys/oauth-public.key" ]; then - echo "ERROR: Las claves de Passport no se generaron correctamente" - echo "Intentando generar manualmente..." - - # Generar claves manualmente usando OpenSSL - openssl genrsa -out storage/app/keys/oauth-private.key 4096 - openssl rsa -in storage/app/keys/oauth-private.key -pubout -out storage/app/keys/oauth-public.key - - echo "✓ Claves generadas manualmente" -fi - -# Establecer permisos correctos para las claves -chmod 600 storage/app/keys/oauth-private.key -chmod 644 storage/app/keys/oauth-public.key -chown www-data:www-data storage/app/keys/oauth-*.key - -echo "✓ Claves de Passport verificadas" - -# Para desarrollo, siempre verificar migraciones -echo "=== VERIFICANDO BASE DE DATOS DESARROLLO ===" - -# Verificar si necesita migraciones -if php artisan migrate:status | grep -q "Pending"; then - echo "Ejecutando migraciones pendientes..." - php artisan migrate --force -fi - -# Verificar si la base de datos tiene datos -USER_COUNT=$(php -r " - require 'vendor/autoload.php'; - \$app = require 'bootstrap/app.php'; - \$app->make(Illuminate\Contracts\Console\Kernel::class)->bootstrap(); - echo \App\Models\User::count(); -") - -if [ "$USER_COUNT" -eq "0" ]; then - echo "Base de datos vacía, ejecutando seeders de desarrollo..." - composer run db:dev -else - echo "✓ Base de datos ya tiene datos ($USER_COUNT usuarios)" -fi - -echo "✓ Configuración de desarrollo completada" - -echo "=== Iniciando PHP-FPM DESARROLLO ===" - -# Iniciar PHP-FPM -exec "$@" diff --git a/entrypoint.sh b/entrypoint.sh index 0bf890d..607b6b8 100644 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -1,7 +1,12 @@ #!/bin/bash set -e -echo "=== Iniciando entrypoint ===" +git config --global --add safe.directory /var/www/pdv.backend + +echo "=== Iniciando entrypoint DESARROLLO ===" + +chown -R www-data:www-data /var/www/pdv.backend/storage /var/www/pdv.backend/bootstrap/cache +chmod -R 775 /var/www/pdv.backend/storage /var/www/pdv.backend/bootstrap/cache # Variables desde Docker environment DB_HOST=${DB_HOST:-mysql} @@ -40,8 +45,12 @@ done echo "✓ MySQL está disponible" -# Comandos de inicialización -echo "Ejecutando comandos de inicialización..." +# Comandos de inicialización para desarrollo +echo "Ejecutando comandos de inicialización de DESARROLLO..." + +# Instalar dependencias (incluye dev) +echo "Instalando dependencias de desarrollo..." +composer install --optimize-autoloader --no-interaction echo "Ejecutando package:discover..." php artisan package:discover --ansi @@ -49,8 +58,8 @@ php artisan package:discover --ansi echo "Creando enlaces simbólicos..." php artisan storage:link --force || true -echo "Ejecutando configuración de producción..." -composer run env:prod +echo "Ejecutando configuración de desarrollo..." +composer run env:dev echo "Creando directorio de claves Passport..." mkdir -p storage/app/keys @@ -77,29 +86,33 @@ chown www-data:www-data storage/app/keys/oauth-*.key echo "✓ Claves de Passport verificadas" -# Archivo de control para primera ejecución -FIRST_RUN_FLAG="/var/www/holos.backend/.first_run_completed" +# Para desarrollo, siempre verificar migraciones +echo "=== VERIFICANDO BASE DE DATOS DESARROLLO ===" -# Solo en la primera ejecución -if [ ! -f "$FIRST_RUN_FLAG" ]; then - echo "=== PRIMERA EJECUCIÓN DETECTADA ===" - - echo "Ejecutando migraciones y seeders..." - if composer run db:prod; then - echo "✓ db:prod completado" - else - echo "ERROR: Falló db:prod" - exit 1 - fi - - # Marcar como completado - touch "$FIRST_RUN_FLAG" - echo "✓ Primera ejecución completada exitosamente" -else - echo "✓ No es primera ejecución, omitiendo setup inicial" +# Verificar si necesita migraciones +if php artisan migrate:status | grep -q "Pending"; then + echo "Ejecutando migraciones pendientes..." + php artisan migrate --force fi -echo "=== Iniciando PHP-FPM ===" +# Verificar si la base de datos tiene datos +USER_COUNT=$(php -r " + require 'vendor/autoload.php'; + \$app = require 'bootstrap/app.php'; + \$app->make(Illuminate\Contracts\Console\Kernel::class)->bootstrap(); + echo \App\Models\User::count(); +") + +if [ "$USER_COUNT" -eq "0" ]; then + echo "Base de datos vacía, ejecutando seeders de desarrollo..." + composer run db:dev +else + echo "✓ Base de datos ya tiene datos ($USER_COUNT usuarios)" +fi + +echo "✓ Configuración de desarrollo completada" + +echo "=== Iniciando PHP-FPM DESARROLLO ===" # Iniciar PHP-FPM exec "$@"