FROM php:8.3-cli-alpine AS base

# Runtime dependencies
RUN apk add --no-cache \
    curl \
    icu-libs \
    libzip \
    && docker-php-ext-install opcache

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

WORKDIR /app

# ── deps stage ────────────────────────────────────────────────────────────────
FROM base AS deps
COPY composer.json composer.lock* ./
RUN composer install \
        --no-dev \
        --no-scripts \
        --no-interaction \
        --optimize-autoloader \
        --prefer-dist

# ── final stage ───────────────────────────────────────────────────────────────
FROM base AS final

COPY --from=deps /app/vendor /app/vendor
COPY . .

RUN mkdir -p var/cache var/log \
    && chmod -R 777 var \
    && composer dump-autoload --optimize --no-dev

EXPOSE 8080

ENV APP_ENV=prod \
    APP_DEBUG=0

# Symfony's built-in dev server via PHP — fine for a single-purpose container
CMD ["php", "-S", "0.0.0.0:8080", "-t", "public", "public/index.php"]
