FROM php:8.4-fpm-alpine
RUN apk add --no-cache sqlite-dev nginx supervisor \
&& docker-php-ext-install pdo pdo_sqlite bcmath
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer
WORKDIR /var/www/html
COPY composer.json composer.lock ./
RUN composer install --no-dev --no-scripts --no-autoloader
COPY --from=node:22-alpine /usr/local/bin/node /usr/local/bin/node
COPY --from=node:22-alpine /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 package.json package-lock.json ./
RUN npm ci
COPY . .
RUN npx vite build \
&& composer dump-autoload --optimize \
&& php artisan config:clear \
&& php artisan route:clear \
&& php artisan view:clear
RUN cp .env.example .env \
&& php artisan key:generate \
&& touch database/database.sqlite \
&& php artisan migrate --force
RUN chown -R www-data:www-data storage bootstrap/cache database
COPY docker/nginx.conf /etc/nginx/http.d/default.conf
COPY docker/supervisord.conf /etc/supervisor/conf.d/supervisord.conf
EXPOSE 80
CMD ["supervisord", "-c", "/etc/supervisor/conf.d/supervisord.conf"]