# ---------------------------------------------------------------------------
# Toolvana web/api image: PHP-FPM 8.2 with all media processing binaries.
# The same image serves the web tier and runs workers/scheduler — services
# differ only by command, keeping builds small and versions identical.
# ---------------------------------------------------------------------------

FROM php:8.2-fpm-alpine AS base

RUN apk add --no-cache bash icu-libs libzip oniguruma libpng jpegoptim

# --- PHP extensions required by CodeIgniter 4 + app ------------------------
RUN apk add --no-cache --virtual .build-deps $PHPIZE_DEPS icu-dev libzip-dev oniguruma-dev libpng-dev \
    && docker-php-ext-install intl mbstring zip pdo_mysql mysqli opcache pcntl exif \
    && pecl install redis \
    && docker-php-ext-enable redis \
    && apk del .build-deps

# --- Media processing stack -------------------------------------------------
RUN apk add --no-cache ffmpeg imagemagick poppler-utils qpdf ghostscript zip unzip curl \
    && wget -q https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -O /usr/local/bin/yt-dlp \
    && chmod 755 /usr/local/bin/yt-dlp || true

# --- Composer deps -----------------------------------------------------------
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer
WORKDIR /app
COPY composer.json composer.lock ./
RUN composer install --no-dev --no-scripts --no-autoloader --prefer-dist --no-interaction

COPY . .
RUN composer dump-autoload -o \
    && chown -R www-data:www-data writable \
    && chmod -R ug+rwX writable

# --- PHP production defaults --------------------------------------------------
RUN cp /usr/local/etc/php/php.ini-production /usr/local/etc/php/php.ini \
    && { echo "opcache.enable=1"; \
         echo "opcache.validate_timestamps=0"; \
         echo "opcache.memory_consumption=192"; \
         echo "realpath_cache_size=4096K"; \
         echo "memory_limit=512M"; } > /usr/local/etc/php/conf.d/toolvana.ini

EXPOSE 9000

CMD ["php-fpm"]
