# Dockerfile cho Laravel 11 + PHP 8.2 (composer install thành công)
FROM php:8.2-fpm

ARG UID=1000
ARG GID=1000

# 1) Cài các package hệ thống cần cho ext
RUN apt-get update && apt-get install -y \
    git \
    curl \
    zip \
    unzip \
    libpng-dev \
    libjpeg-dev \
    libfreetype6-dev \
    libwebp-dev \
    libonig-dev \
    libxml2-dev \
    libzip-dev \
    libicu-dev \
    ca-certificates \
    && rm -rf /var/lib/apt/lists/*

# 2) Bật và build các PHP extension cần thiết
# docker-php-ext-configure gd để hỗ trợ jpeg/freetype
RUN docker-php-ext-configure gd --with-freetype --with-jpeg --with-webp \
    && docker-php-ext-install -j$(nproc) gd pdo pdo_mysql mbstring zip exif pcntl bcmath intl

# 3) Copy composer binary để dùng composer chính chủ
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer

# 4) Tối ưu layer: copy chỉ composer files trước để tận dụng cache
WORKDIR /var/www
COPY composer.json composer.lock /var/www/

ENV COMPOSER_ALLOW_SUPERUSER=1
ENV COMPOSER_MEMORY_LIMIT=-1

# 5) Install dependencies (không chạy scripts để tránh liên kết DB trong build)
RUN composer install --no-interaction --prefer-dist --optimize-autoloader --no-scripts

# 6) Copy toàn bộ source
COPY . /var/www

# 7) Set quyền
RUN chown -R www-data:www-data /var/www \
    && chmod -R 775 /var/www/storage /var/www/bootstrap/cache

# 8) (Tùy) chạy post-install khi container khởi — bạn có thể thay CMD bằng startup script
CMD ["php-fpm"]
