# ─────────────────────────────────────────────────────────────
# Production image — PHP 8.4 FPM · Debian Bookworm
# Sistem Pemantauan Kemampanan Pusat Data MBIP
#
# Extensions sedia ada dalam php:8.4-fpm-bookworm — JANGAN pasang
# semula (mencetuskan recompile + header hilang):
#   ctype · curl · dom · fileinfo · json · openssl · pcre
#   posix · readline · session · simplexml · sodium
#   tokenizer · xml · xmlreader · xmlwriter · zlib
# ─────────────────────────────────────────────────────────────
FROM php:8.4-fpm-bookworm

LABEL maintainer="MBIP"
LABEL description="Sistem Pemantauan Kemampanan Pusat Data MBIP — PHP 8.4 FPM"

ENV TZ=Asia/Kuala_Lumpur

# ── System libs + timezone ───────────────────────────────────
RUN apt-get update && apt-get install -y --no-install-recommends \
        tzdata \
        libpng-dev \
        libjpeg62-turbo-dev \
        libfreetype6-dev \
        libwebp-dev \
        libzip-dev \
        libicu-dev \
        libonig-dev \
        default-mysql-client \
        supervisor \
        unzip \
        curl \
    && ln -snf /usr/share/zoneinfo/${TZ} /etc/localtime \
    && echo ${TZ} > /etc/timezone \
    && rm -rf /var/lib/apt/lists/*

# ── Configure GD ─────────────────────────────────────────────
RUN docker-php-ext-configure gd \
        --with-freetype \
        --with-jpeg \
        --with-webp

# ── Install extensions ────────────────────────────────────────
RUN docker-php-ext-install -j$(nproc) \
        bcmath \
        exif \
        gd \
        intl \
        mbstring \
        mysqli \
        opcache \
        pcntl \
        pdo_mysql \
        zip

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

# ── PHP + FPM config ─────────────────────────────────────────
COPY docker/php/php.ini  $PHP_INI_DIR/conf.d/99-mbip.ini
COPY docker/php/www.conf /usr/local/etc/php-fpm.d/www.conf

# ── Supervisor ────────────────────────────────────────────────
COPY docker/supervisor/supervisord.conf /etc/supervisor/conf.d/supervisord.conf

# ── Cipta direktori yang diperlukan ──────────────────────────
RUN mkdir -p \
        /var/www/html/bootstrap/cache \
        /var/www/html/storage/framework/cache/data \
        /var/www/html/storage/framework/sessions \
        /var/www/html/storage/framework/testing \
        /var/www/html/storage/framework/views \
        /var/www/html/storage/app/public \
        /var/www/html/storage/app/private/reports \
        /var/www/html/storage/logs \
        /var/log/php-fpm \
        /var/log/supervisor

# ── Entrypoint ────────────────────────────────────────────────
COPY docker/entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh

WORKDIR /var/www/html

EXPOSE 9000

ENTRYPOINT ["/entrypoint.sh"]
