# syntax=docker/dockerfile:1 FROM node:22-bookworm-slim AS frontend WORKDIR /var/www/html COPY package.json package-lock.json ./ RUN npm ci COPY resources ./resources COPY public ./public COPY vite.config.js . RUN npm run build FROM composer:2 AS composer FROM php:8.4-fpm-bookworm AS app ENV COMPOSER_ALLOW_SUPERUSER=1 \ PHP_OPCACHE_VALIDATE_TIMESTAMPS=0 WORKDIR /var/www/html RUN apt-get update \ && apt-get install -y --no-install-recommends \ gosu \ libfreetype6-dev \ libicu-dev \ libjpeg62-turbo-dev \ libonig-dev \ libpng-dev \ libxml2-dev \ libzip-dev \ unzip \ && docker-php-ext-configure gd --with-freetype --with-jpeg \ && docker-php-ext-install -j"$(nproc)" \ bcmath \ exif \ gd \ intl \ mbstring \ opcache \ pcntl \ pdo_mysql \ xml \ zip \ && rm -rf /var/lib/apt/lists/* COPY --from=composer /usr/bin/composer /usr/bin/composer COPY . . COPY --from=frontend /var/www/html/public/build ./public/build RUN composer install --no-dev --optimize-autoloader --no-interaction --prefer-dist \ && mkdir -p \ storage/framework/cache/data \ storage/framework/sessions \ storage/framework/views \ storage/logs \ bootstrap/cache \ && chown -R www-data:www-data storage bootstrap/cache \ && chmod -R ug+rwX storage bootstrap/cache COPY docker/entrypoint.sh /usr/local/bin/nextchair-entrypoint RUN chmod +x /usr/local/bin/nextchair-entrypoint ENTRYPOINT ["/usr/local/bin/nextchair-entrypoint"] CMD ["php-fpm", "-F"] FROM nginx:1.27-alpine AS nginx WORKDIR /var/www/html COPY public ./public COPY --from=frontend /var/www/html/public/build ./public/build COPY docker/nginx/default.conf /etc/nginx/conf.d/default.conf RUN mkdir -p /var/www/html/storage/app/public \ && ln -s /var/www/html/storage/app/public /var/www/html/public/storage