From c06e237cd198eba0f4ad13a3ea5b28c9249d60fc Mon Sep 17 00:00:00 2001 From: Meghdad Date: Tue, 19 May 2026 18:18:00 +0330 Subject: [PATCH] move npm run build runs with php artisan available --- dockerized/SKILL.md | 1 + dockerized/docker/app/Dockerfile | 40 ++++++++++++++++++++++---------- 2 files changed, 29 insertions(+), 12 deletions(-) diff --git a/dockerized/SKILL.md b/dockerized/SKILL.md index 1c13e4d..95c1b21 100644 --- a/dockerized/SKILL.md +++ b/dockerized/SKILL.md @@ -40,6 +40,7 @@ Only publish HTTP and RTMP by default. Keep MediaMTX HLS behind Apache and keep - When changing MediaMTX ports, update Compose environment, published ports, entrypoint defaults, and the template together. - When changing Laravel runtime behavior, update the shared `x-app-environment` block unless the value belongs to one role only. - When changing queue behavior, prefer env-driven options on the `queue` service and `docker/app/entrypoint.sh`. +- Keep `npm run build` after PHP setup and Composer install in `docker/app/Dockerfile`; the Wayfinder Vite plugin invokes `php artisan wayfinder:generate` during the build. - Keep deploy script behavior idempotent: repeat runs should update the Git checkout, rebuild, migrate, and restart services without deleting volumes. - Keep generated secrets in `.env`; do not bake secrets into images or templates. diff --git a/dockerized/docker/app/Dockerfile b/dockerized/docker/app/Dockerfile index 5bc197f..369215d 100644 --- a/dockerized/docker/app/Dockerfile +++ b/dockerized/docker/app/Dockerfile @@ -1,16 +1,6 @@ # syntax=docker/dockerfile:1 -FROM node:22-bookworm-slim AS assets - -WORKDIR /build - -COPY runtime/source/package.json runtime/source/package-lock.json ./ -RUN npm ci - -COPY runtime/source/ ./ -RUN npm run build - -FROM php:8.4-apache-bookworm AS app +FROM php:8.4-apache-bookworm AS php-base ENV APACHE_DOCUMENT_ROOT=/var/www/html/public \ COMPOSER_ALLOW_SUPERUSER=1 @@ -48,11 +38,37 @@ COPY --from=composer:2 /usr/bin/composer /usr/bin/composer WORKDIR /var/www/html +FROM php-base AS composer-deps + COPY runtime/source/composer.json runtime/source/composer.lock ./ RUN composer install --no-dev --no-interaction --prefer-dist --optimize-autoloader --no-scripts +FROM php-base AS assets + +COPY --from=node:22-bookworm-slim /usr/local/bin/node /usr/local/bin/node +COPY --from=node:22-bookworm-slim /usr/local/lib/node_modules /usr/local/lib/node_modules +RUN ln -s /usr/local/lib/node_modules/npm/bin/npm-cli.js /usr/local/bin/npm \ + && ln -s /usr/local/lib/node_modules/npm/bin/npx-cli.js /usr/local/bin/npx + +COPY runtime/source/composer.json runtime/source/composer.lock ./ +COPY --from=composer-deps /var/www/html/vendor ./vendor + +COPY runtime/source/package.json runtime/source/package-lock.json ./ +RUN npm ci + COPY runtime/source/ ./ -COPY --from=assets /build/public/build ./public/build +RUN composer dump-autoload --optimize --no-dev \ + && php artisan package:discover --ansi \ + && php artisan route:clear \ + && npm run build + +FROM php-base AS app + +COPY runtime/source/composer.json runtime/source/composer.lock ./ +COPY --from=composer-deps /var/www/html/vendor ./vendor + +COPY runtime/source/ ./ +COPY --from=assets /var/www/html/public/build ./public/build COPY docker/app/apache/nyone.conf.template /etc/apache2/sites-available/nyone.conf.template COPY docker/app/php/production.ini /usr/local/etc/php/conf.d/production.ini