# ────────────────────────────────────────────────────────────────
# Immagine base: PHP 8.2 in modalità FPM (FastCGI Process Manager)
# FPM è la modalità usata in produzione con Nginx.
# ────────────────────────────────────────────────────────────────
FROM php:8.2-fpm

# Argomenti di build (puoi sovrascriverli con --build-arg)
ARG USER_ID=1000
ARG GROUP_ID=1000

# ────────────────────────────────────────────────────────────────
# 1. Dipendenze di sistema e estensioni PHP necessarie a Laravel
# ────────────────────────────────────────────────────────────────
RUN apt-get update && apt-get install -y \
    # Strumenti base
    git \
    curl \
    unzip \
    zip \
    # Librerie per le estensioni PHP
    libpng-dev \
    libonig-dev \
    libxml2-dev \
    libzip-dev \
    libpq-dev \
    libredis-dev \
    # Per generazione immagini/PDF (opzionale ma comune)
    libfreetype6-dev \
    libjpeg62-turbo-dev \
    # Pulizia cache apt per ridurre dimensione immagine
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

# ────────────────────────────────────────────────────────────────
# 2. Estensioni PHP
#    docker-php-ext-install  → estensioni native PHP
#    pecl install            → estensioni da PECL (es. Redis)
# ────────────────────────────────────────────────────────────────
RUN docker-php-ext-configure gd --with-freetype --with-jpeg \
    && docker-php-ext-install \
        pdo_mysql \
        mbstring \
        exif \
        pcntl \
        bcmath \
        gd \
        zip \
        xml \
        opcache

# Estensione Redis via PECL
RUN pecl install redis \
    && docker-php-ext-enable redis

# ────────────────────────────────────────────────────────────────
# 3. Composer: gestore dipendenze PHP
#    Lo copiamo dall'immagine ufficiale di Composer (multi-stage)
# ────────────────────────────────────────────────────────────────
COPY --from=composer:2.7 /usr/bin/composer /usr/bin/composer

# ────────────────────────────────────────────────────────────────
# 4. Utente non-root per sicurezza
#    Usiamo lo stesso UID/GID del tuo utente host per evitare
#    problemi di permessi sui file montati con volume.
# ────────────────────────────────────────────────────────────────
RUN groupmod -o -g ${GROUP_ID} www-data \
    && usermod -o -u ${USER_ID} -g www-data www-data

# ────────────────────────────────────────────────────────────────
# 5. Directory di lavoro e permessi
# ────────────────────────────────────────────────────────────────
WORKDIR /var/www

RUN mkdir -p \
    storage/app/public \
    storage/framework/cache/data \
    storage/framework/sessions \
    storage/framework/testing \
    storage/framework/views \
    storage/logs \
    bootstrap/cache \
    && chown -R www-data:www-data /var/www

# ────────────────────────────────────────────────────────────────
# 6. Script di avvio
# ────────────────────────────────────────────────────────────────
COPY docker/php/entrypoint.sh /usr/local/bin/entrypoint.sh
RUN chmod +x /usr/local/bin/entrypoint.sh

USER www-data

ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
CMD ["php-fpm"]
