##############################################################################
# PhinTech CRM — Production Dockerfile
# PHP 8.3 + Nginx + MariaDB + Supervisor on Debian Bookworm
# Powered by PhinTech Solutions — Built in Kenya
##############################################################################

FROM php:8.3-fpm-bookworm AS base

# ── System packages ───────────────────────────────────────────────────────
RUN apt-get update && apt-get install -y --no-install-recommends \
        nginx \
        supervisor \
        curl \
        unzip \
        git \
        gnupg \
        lsb-release \
        ca-certificates \
        libpng-dev \
        libjpeg-dev \
        libfreetype6-dev \
        libzip-dev \
        libicu-dev \
        libonig-dev \
        libxml2-dev \
        libssl-dev \
    && docker-php-ext-configure gd --with-freetype --with-jpeg \
    && docker-php-ext-install -j$(nproc) \
        pdo_mysql \
        mbstring \
        zip \
        gd \
        intl \
        xml \
        bcmath \
        opcache \
        pcntl \
        calendar \
    && apt-get clean && rm -rf /var/lib/apt/lists/*

# ── MariaDB (MySQL-compatible, Debian official repo — no expired GPG keys) ─
RUN apt-get update \
    && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
        mariadb-server \
    && apt-get clean && rm -rf /var/lib/apt/lists/*

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

# ── PHP configuration ─────────────────────────────────────────────────────
COPY docker/php.ini /usr/local/etc/php/conf.d/phintech.ini

# ── Nginx ─────────────────────────────────────────────────────────────────
COPY docker/nginx.conf /etc/nginx/sites-available/default
RUN ln -sf /etc/nginx/sites-available/default /etc/nginx/sites-enabled/default

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

# ── Application ───────────────────────────────────────────────────────────
WORKDIR /var/www/html

# Install PHP deps first (cached layer — only re-runs if composer.lock changes)
COPY composer.json composer.lock ./
RUN COMPOSER_ALLOW_SUPERUSER=1 composer install \
        --no-dev \
        --no-interaction \
        --no-scripts \
        --no-autoloader \
        --prefer-dist

# Copy application source
COPY . .

# Create all required directories so artisan can boot during build
RUN mkdir -p \
        bootstrap/cache \
        storage/framework/cache/data \
        storage/framework/sessions \
        storage/framework/views \
        storage/logs \
        storage/app/public \
    && chmod -R 775 bootstrap/cache storage

# Generate optimised autoload + run package:discover (needs storage dirs above)
RUN COMPOSER_ALLOW_SUPERUSER=1 APP_KEY="base64:build_placeholder_key_32bytes==" \
    composer dump-autoload --optimize --no-dev

# Copy PhinTech logo into public (served directly, no Vite build needed)
RUN cp packages/Webkul/Admin/src/Resources/assets/images/phintech-logo.png \
       public/phintech-logo.png 2>/dev/null || true

# Final ownership
RUN chown -R www-data:www-data storage bootstrap/cache public \
    && chmod -R 775 storage bootstrap/cache

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

EXPOSE 8080

ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
