FROM node:22.20.0-alpine@sha256:dbcedd8aeab47fbc0f4dd4bffa55b7c3c729a707875968d467aaaea42d6225af AS client
WORKDIR /build
COPY package.json package-lock.json ./
RUN npm ci --ignore-scripts --no-audit --no-fund
COPY resources/js ./resources/js
RUN mkdir public && node_modules/.bin/esbuild resources/js/app.jsx --bundle --format=esm --define:process.env.NODE_ENV='"production"' --outfile=public/app.js \
    && node -e 'const fs=require("fs");const p=n=>JSON.parse(fs.readFileSync("node_modules/"+n+"/package.json")).version;fs.writeFileSync("public/versions.json",JSON.stringify({node:process.version,react:p("react"),reactDom:p("react-dom"),inertia:p("@inertiajs/react"),esbuild:p("esbuild")}))'
FROM composer:2.9@sha256:b09bccd91a78fe8a9ab4b33d707b862e8fe54fec17782e32683ad2a69c46867d AS composer
FROM php:8.3-cli-alpine@sha256:8dbeb51c352cf1f70d5d50f3642c9fbed311e914475ea2382f5bc1525bef7bb3
COPY --from=composer /usr/bin/composer /usr/local/bin/composer
WORKDIR /fixture
COPY composer.json composer.lock ./
RUN composer install --no-scripts --no-plugins --no-interaction --no-progress --prefer-dist
COPY . ./
COPY --from=client /build/public/ ./public/
RUN composer dump-autoload --no-scripts --no-plugins --no-interaction
ENV APP_PACKAGES_CACHE=/tmp/packages.php APP_SERVICES_CACHE=/tmp/services.php
USER 65534:65534
ENTRYPOINT []
CMD ["php", "-S", "127.0.0.1:8080", "-t", "public", "public/index.php"]
