# syntax=docker/dockerfile:1.6
# ============================================================================
# Imagen de desarrollo para mensajes360-8.2
#
# Base: php:8.2-apache  (idéntico a la suite XAMPP en uso, mod_php + Apache)
# Extensiones añadidas: pdo_mysql, mbstring, gd, intl, zip, opcache, exif
# Xdebug 3 instalado pero deshabilitado por defecto (controlado por XDEBUG_MODE)
# ============================================================================

FROM php:8.2-apache

# --- Argumentos de build (permiten ajustar UID/GID para evitar conflictos
#     de permisos con volúmenes montados desde Windows/macOS/Linux) ---
ARG WWW_DATA_UID=1000
ARG WWW_DATA_GID=1000

# --- Paquetes del sistema necesarios para compilar extensiones ---
RUN apt-get update && apt-get install -y --no-install-recommends \
        libzip-dev \
        libpng-dev \
        libjpeg-dev \
        libfreetype6-dev \
        libicu-dev \
        libonig-dev \
        libxml2-dev \
        libssl-dev \
        zip \
        unzip \
        git \
        curl \
        ca-certificates \
    && rm -rf /var/lib/apt/lists/*

# --- Extensiones PHP requeridas por la aplicación ---
# pdo_mysql: 1.207 usos de PDO en el código
# mbstring: para mb_convert_encoding (reemplazo de utf8_encode)
# gd: webhooks de imagen (mtFunctions, whatsappBussines...)
# intl: locale-aware date formatting (reemplazo de strftime)
# zip: requerido por google/cloud-storage y otras libs
# exif: lectura de metadatos de imágenes subidas
# opcache: rendimiento en producción
RUN docker-php-ext-configure gd --with-freetype --with-jpeg \
    && docker-php-ext-install -j$(nproc) \
        pdo_mysql \
        mbstring \
        gd \
        intl \
        zip \
        exif \
        opcache

# --- Xdebug 3 (instalado, pero su MODE se controla por env) ---
RUN pecl install xdebug \
    && docker-php-ext-enable xdebug

# --- Composer (oficial, copiado desde su imagen) ---
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer

# --- Configuración de Apache ---
# Habilitar mod_rewrite (lo usa el .htaccess existente)
RUN a2enmod rewrite headers

# DocumentRoot del proyecto
ENV APACHE_DOCUMENT_ROOT=/var/www/html
RUN sed -ri -e 's!/var/www/html!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/sites-available/*.conf \
    && sed -ri -e 's!/var/www/!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/apache2.conf /etc/apache2/conf-available/*.conf

# Permitir override desde .htaccess (mod_rewrite, etc.)
RUN { \
        echo '<Directory /var/www/html/>'; \
        echo '    AllowOverride All'; \
        echo '    Require all granted'; \
        echo '</Directory>'; \
    } > /etc/apache2/conf-available/zz-mensajes360.conf \
    && a2enconf zz-mensajes360

# --- Configuración de PHP ---
# Copiamos un ini propio con settings sensatos para desarrollo
COPY docker/php.ini /usr/local/etc/php/conf.d/zz-mensajes360.ini
COPY docker/xdebug.ini /usr/local/etc/php/conf.d/zz-xdebug.ini

# --- Ajuste de UID/GID de www-data para que coincida con el host
#     (evita problemas de permisos al escribir a un volumen montado) ---
RUN if [ "$(id -u www-data)" != "${WWW_DATA_UID}" ]; then \
        usermod -u ${WWW_DATA_UID} www-data && \
        groupmod -g ${WWW_DATA_GID} www-data; \
    fi

WORKDIR /var/www/html

# Apache escucha en 80 dentro del contenedor; docker-compose mapea a 8080
EXPOSE 80

# El comando por defecto de la imagen base ya arranca apache2-foreground.
