# Stage 1: Install prod dependencies
FROM composer:2 AS prod

WORKDIR /app

# Copy composer manifests first to leverage build cache
COPY composer.json composer.loc[k] ./

RUN composer install --no-dev --no-interaction --no-scripts --prefer-dist

# Stage 2: Dev — quality checks (includes dev dependencies)
FROM php:8.5-cli-alpine AS dev

RUN apk add --no-cache libsodium-dev \
    && docker-php-ext-install sodium

COPY --from=composer:2 /usr/bin/composer /usr/bin/composer

WORKDIR /app

COPY composer.json composer.loc[k] ./
RUN composer install --no-interaction --no-scripts --prefer-dist
COPY . .

# Stage 3: Backend runtime
FROM php:8.5-cli-alpine AS backend

# libsodium is required for Ed25519 verification
RUN apk add --no-cache libsodium-dev \
    && docker-php-ext-install sodium

RUN addgroup -S phpgrp -g 10001 && adduser -S phpusr -G phpgrp -u 10001

WORKDIR /app

COPY --chown=10001:10001 . .
COPY --from=prod --chown=10001:10001 /app/vendor ./vendor

USER 10001:10001
EXPOSE 3005

CMD ["php", "-S", "0.0.0.0:3005", "-t", "public", "public/index.php"]
