FROM php:8.2-apache

# 1. Instalar dependencias del sistema y librerías requeridas por Laravel
RUN apt-get update && apt-get install -y --no-install-recommends \
    libpng-dev \
    libjpeg-dev \
    libfreetype6-dev \
    libzip-dev \
    libsqlite3-dev \
    libcurl4-openssl-dev \
    libonig-dev \
    libxml2-dev \
    unzip \
    git \
    curl \
    && docker-php-ext-configure gd --with-freetype --with-jpeg \
    && docker-php-ext-install -j$(nproc) \
        mysqli \
        pdo_mysql \
        pdo_sqlite \
        gd \
        zip \
        bcmath \
        curl \
        mbstring \
        xml \
    && apt-get clean && rm -rf /var/lib/apt/lists/*

# 2. Instalar Composer desde la imagen oficial
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer

# 3. Configurar Apache: Habilitar rewrite/headers y apuntar DocumentRoot a 'public/' (Estándar Laravel)
ENV APACHE_DOCUMENT_ROOT /var/www/html/public

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 \
    && a2enmod rewrite headers

# 4. Ajustar configuraciones recomendadas de PHP para Laravel
RUN echo "upload_max_filesize = 64M" > /usr/local/etc/php/conf.d/laravel.ini \
    && echo "post_max_size = 64M" >> /usr/local/etc/php/conf.d/laravel.ini \
    && echo "memory_limit = 256M" >> /usr/local/etc/php/conf.d/laravel.ini \
    && echo "max_execution_time = 300" >> /usr/local/etc/php/conf.d/laravel.ini \
    && echo "date.timezone = America/Bogota" >> /usr/local/etc/php/conf.d/laravel.ini

# 5. Directorio de trabajo
WORKDIR /var/www/html

# 6. Copiar el código del proyecto
COPY . /var/www/html

# 7. Asignar permisos requeridos por Laravel a storage y bootstrap/cache
RUN mkdir -p /var/www/html/storage /var/www/html/bootstrap/cache \
    && chown -R www-data:www-data /var/www/html/storage /var/www/html/bootstrap/cache \
    && chmod -R 775 /var/www/html/storage /var/www/html/bootstrap/cache

EXPOSE 80

CMD ["apache2-foreground"]
