# FROM php:8.2-fpm

# # Install dependencies
# RUN apt-get update && apt-get install -y \
#     git \
#     unzip \
#     libzip-dev \
#     libpng-dev \
#     libjpeg-dev \
#     libonig-dev \
#     libxml2-dev \
#     zip \
#     && docker-php-ext-install pdo pdo_mysql zip gd mbstring exif pcntl bcmath intl opcache

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

# # Copy PHP config
# COPY docker/php/php.ini /usr/local/etc/php/

# WORKDIR /var/www/html

# -----------------------------------------------------------------------------
# Base PHP-FPM with Composer + Symfony-friendly extensions
# -----------------------------------------------------------------------------
    FROM php:8.2-fpm-alpine AS base
    WORKDIR /var/www/html
    
    # System dependencies
    RUN apk add --no-cache \
          bash git unzip icu-dev libpng-dev libjpeg-turbo-dev libwebp-dev \
          libzip-dev oniguruma-dev libxml2-dev postgresql-dev zlib-dev
    
    # PHP extensions commonly used by Symfony
    RUN docker-php-ext-configure gd --with-jpeg --with-webp \
     && docker-php-ext-install -j"$(nproc)" \
          intl \
          gd \
          pdo_pgsql \
          opcache \
          mbstring \
          zip \
          xml
    
    # Composer available in the running container (dev + prod)
    COPY --from=composer:2.7 /usr/bin/composer /usr/bin/composer
    
    # Recommended PHP settings (tweak as needed)
    RUN { \
          echo "memory_limit=512M"; \
          echo "upload_max_filesize=50M"; \
          echo "post_max_size=50M"; \
          echo "date.timezone=UTC"; \
        } > /usr/local/etc/php/conf.d/php-recommended.ini \
     && { \
          echo "opcache.enable=1"; \
          echo "opcache.enable_cli=1"; \
          echo "opcache.memory_consumption=256"; \
          echo "opcache.interned_strings_buffer=16"; \
          echo "opcache.max_accelerated_files=20000"; \
          echo "opcache.validate_timestamps=0"; \
          echo "opcache.jit=tracing"; \
          echo "opcache.jit_buffer_size=128M"; \
        } > /usr/local/etc/php/conf.d/opcache-recommended.ini
    
    # Small healthcheck file for Nginx
    RUN mkdir -p public && printf "OK" > public/healthz
    
    # Ensure correct user
    RUN addgroup -g 1000 app && adduser -D -G app -u 1000 app
    # php-fpm uses www-data; keep both available
    RUN chown -R www-data:www-data /var/www
    
    # -----------------------------------------------------------------------------
    # Development image (mount your code via docker-compose volumes)
    # -----------------------------------------------------------------------------
    FROM base AS dev
    ENV APP_ENV=dev
    # Optional: enable Xdebug (uncomment to use)
    # RUN apk add --no-cache $PHPIZE_DEPS \
    #  && pecl install xdebug \
    #  && docker-php-ext-enable xdebug \
    #  && { \
    #       echo "xdebug.mode=debug,develop"; \
    #       echo "xdebug.client_host=host.docker.internal"; \
    #     } > /usr/local/etc/php/conf.d/xdebug.ini
    # Composer cache directory (faster installs inside container)
    ENV COMPOSER_CACHE_DIR=/tmp/composer
    CMD ["php-fpm"]
    
    # -----------------------------------------------------------------------------
    # Production image (copies your app + installs deps + warms cache)
    # -----------------------------------------------------------------------------
    FROM base AS prod
    ENV APP_ENV=prod
    # Copy only manifests first (better layer caching); ignore if missing
    COPY composer.json composer.lock* symfony.lock* ./
    # Install vendors (no scripts here; run later with console if needed)
    RUN --mount=type=cache,target=/tmp/composer \
        if [ -f composer.json ]; then \
          composer install --no-dev --prefer-dist --no-interaction --no-progress --no-scripts; \
        fi
    
    # Copy the rest of the app
    COPY . /var/www/html
    
    # If Symfony console exists, finalize install & warm cache
    RUN if [ -f bin/console ]; then \
          set -ex; \
          composer dump-autoload --no-dev --optimize; \
          php bin/console cache:clear --no-warmup; \
          php bin/console cache:warmup; \
          mkdir -p var && chown -R www-data:www-data var; \
        fi
    
    USER www-data
    CMD ["php-fpm"]
    