FROM node:22-bookworm AS assets WORKDIR /app COPY rebuild/package*.json ./ RUN npm ci --ignore-scripts COPY rebuild/ ./ RUN npm run build FROM composer:2 AS vendor WORKDIR /app COPY rebuild/composer.json rebuild/composer.lock ./ RUN composer install --no-dev --no-interaction --prefer-dist --optimize-autoloader --no-scripts COPY rebuild/ ./ RUN composer dump-autoload --optimize --no-scripts FROM php:8.4-apache RUN apt-get update \ && apt-get install -y --no-install-recommends \ libfreetype6-dev \ libjpeg62-turbo-dev \ libonig-dev \ libpng-dev \ libzip-dev \ unzip \ && docker-php-ext-configure gd --with-freetype --with-jpeg \ && docker-php-ext-install -j"$(nproc)" pdo_mysql mysqli gd zip mbstring exif \ && a2enmod rewrite headers \ && rm -rf /var/lib/apt/lists/* COPY docker/php.ini /usr/local/etc/php/conf.d/spota.ini COPY docker/apache-laravel-vhost.conf /etc/apache2/sites-available/000-default.conf WORKDIR /var/www/html COPY rebuild/ /var/www/html COPY --from=vendor /app/vendor /var/www/html/vendor COPY --from=assets /app/public/build /var/www/html/public/build COPY docker/laravel-entrypoint.sh /usr/local/bin/laravel-entrypoint RUN chmod +x /usr/local/bin/laravel-entrypoint \ && mkdir -p storage/app storage/framework/cache storage/framework/sessions storage/framework/views storage/logs bootstrap/cache public/build \ && rm -f bootstrap/cache/*.php \ && APP_ENV=production APP_DEBUG=false APP_KEY=base64:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= DB_CONNECTION=mysql DB_HOST=db DB_PORT=3306 DB_DATABASE=spota_spotadb DB_USERNAME=spota_user DB_PASSWORD=spota_password SESSION_DRIVER=file CACHE_STORE=file QUEUE_CONNECTION=sync php artisan package:discover --ansi \ && chown -R www-data:www-data storage bootstrap/cache public/build ENTRYPOINT ["laravel-entrypoint"] CMD ["apache2-foreground"]