diff --git a/Dockerfile b/Dockerfile index cfe8f5c4..b29495a8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -28,27 +28,28 @@ COPY --from=composer:latest /usr/bin/composer /usr/bin/composer WORKDIR /var/www/html -# Copy all application files +# Copy composer files first (for dependency caching) +COPY composer.json composer.lock* ./ + +# Install dependencies BEFORE copying application files +RUN composer install --no-interaction --no-progress --optimize-autoloader + +# Copy the rest of the application files COPY --chown=www-data:www-data . . -# CRITICAL: Create storage directories BEFORE composer install +# Create necessary directories RUN mkdir -p storage/framework/{cache,sessions,views} \ && mkdir -p storage/logs \ && mkdir -p bootstrap/cache \ - && chmod -R 777 storage \ - && chmod -R 777 bootstrap/cache + && chmod -R 775 storage \ + && chmod -R 775 bootstrap/cache \ + && chown -R www-data:www-data storage bootstrap -# Verify directories exist (debug) -RUN ls -la storage/framework/ && ls -la bootstrap/ +# Generate application key +RUN php artisan key:generate --no-interaction --force -# Install dependencies with --no-scripts first to avoid post-install commands -RUN composer install --no-dev --no-interaction --no-progress --optimize-autoloader --no-scripts - -# Now run the post-install scripts (storage exists now) -RUN composer run-script post-autoload-dump || echo "Post-autoload dump skipped" - -# Generate key if needed -RUN php artisan key:generate --no-interaction --force || true +# Clear and cache configurations (optional) +RUN php artisan config:clear && php artisan cache:clear || true # Copy entrypoint script COPY entrypoint.sh /entrypoint.sh