FROM php:8.3-cli AS vendor RUN apt-get update && apt-get install -y \ git \ libfreetype6-dev \ libicu-dev \ libjpeg62-turbo-dev \ libpng-dev \ libzip-dev \ unzip \ zip \ && docker-php-ext-configure gd --with-freetype --with-jpeg \ && docker-php-ext-install -j"$(nproc)" gd intl zip \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* COPY --from=composer:2 /usr/bin/composer /usr/bin/composer WORKDIR /app COPY composer.json composer.lock ./ RUN composer install \ --no-dev \ --prefer-dist \ --no-interaction \ --no-progress \ --no-scripts \ --optimize-autoloader FROM node:20-bookworm-slim AS frontend WORKDIR /app COPY package.json package-lock.json* ./ RUN if [ -f package-lock.json ]; then npm ci; else npm install; fi COPY --from=vendor /app/vendor ./vendor COPY resources ./resources COPY public ./public COPY vite.config.js package.json postcss.config.js tailwind.config.js ./ RUN npm run build FROM php:8.3-fpm AS runtime RUN apt-get update && apt-get install -y \ curl \ default-mysql-client \ git \ libfreetype6-dev \ libicu-dev \ libjpeg62-turbo-dev \ libonig-dev \ libpng-dev \ libxml2-dev \ libzip-dev \ unzip \ zip \ mdbtools \ && docker-php-ext-configure gd --with-freetype --with-jpeg \ && docker-php-ext-install -j"$(nproc)" bcmath exif gd intl mbstring opcache pcntl pdo_mysql zip \ && pecl install redis \ && docker-php-ext-enable redis \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* COPY --from=composer:2 /usr/bin/composer /usr/bin/composer WORKDIR /var/www COPY --chown=www-data:www-data . . COPY --chown=www-data:www-data --from=vendor /app/vendor ./vendor COPY --chown=www-data:www-data --from=frontend /app/public/build ./public/build COPY --chown=www-data:www-data docker/entrypoint.sh /entrypoint.sh COPY --chown=www-data:www-data docker/php/local.ini /usr/local/etc/php/conf.d/99-netgescon.ini RUN chmod +x /entrypoint.sh \ && mkdir -p storage/framework/cache/data storage/framework/sessions storage/framework/views bootstrap/cache /opt/netgescon \ && cp -a public /opt/netgescon/public \ && composer dump-autoload --no-dev --optimize \ && chmod -R 775 storage bootstrap/cache EXPOSE 9000 ENTRYPOINT ["/entrypoint.sh"] CMD ["php-fpm"]