FROM php:8.2-apache-bullseye

# 1) Apache de base
RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf

# 2) Paquets système (incl. supervisor pour le worker + librabbitmq-dev pour amqp)
RUN apt-get update \
 && apt-get install -y --no-install-recommends \
    cron supervisor vim locales coreutils apt-utils git \
    g++ libicu-dev libpng-dev libxml2-dev libzip-dev libonig-dev libxslt-dev \
    librabbitmq-dev \
    wkhtmltopdf fontconfig fonts-dejavu-core fonts-dejavu-extra \
    ca-certificates tzdata curl \
 && rm -rf /var/lib/apt/lists/*

# Installer ImageMagick et ses dépendances
RUN apt-get update && apt-get install -y \
    imagemagick \
    libmagickwand-dev \
    libmagickcore-dev \
    && rm -rf /var/lib/apt/lists/*

# Installer l'extension Imagick pour PHP
RUN pecl install imagick \
    && docker-php-ext-enable imagick

# 3) Locales (FR + EN)
RUN echo "en_US.UTF-8 UTF-8" > /etc/locale.gen \
 && echo "fr_FR.UTF-8 UTF-8" >> /etc/locale.gen \
 && locale-gen
ENV LANG=fr_FR.UTF-8 \
    LANGUAGE=fr_FR:fr:en_US:en \
    LC_ALL=fr_FR.UTF-8

# 4) wkhtmltopdf
ENV WKHTMLTOPDF_BINARY=/usr/bin/wkhtmltopdf

# 5) Node.js 20 + Yarn (pour build front si besoin)
RUN curl -fsSL https://deb.nodesource.com/setup_20.x | bash - \
 && apt-get install -y nodejs \
 && npm install --global yarn

# 6) Composer
RUN curl -sSk https://getcomposer.org/installer | php -- --disable-tls \
 && mv composer.phar /usr/local/bin/composer

# 7) PHP extensions coeur
RUN docker-php-ext-configure intl \
 && docker-php-ext-install -j"$(nproc)" \
    pdo pdo_mysql mysqli gd opcache intl zip calendar dom mbstring xsl

# 8) APCu + AMQP (via installer mlocati)
RUN pecl install apcu && docker-php-ext-enable apcu
RUN pecl install redis && docker-php-ext-enable redis
ADD https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions /usr/local/bin/
RUN chmod +x /usr/local/bin/install-php-extensions && sync \
 && install-php-extensions amqp

# 9) Apache: rewrite + DocumentRoot => /var/www/public (Symfony)
ENV APACHE_DOCUMENT_ROOT=/var/www/public
RUN a2enmod rewrite \
 && 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

# 10) Installer Symfony CLI
RUN curl -1sLf 'https://dl.cloudsmith.io/public/symfony/stable/setup.deb.sh' | bash \
    && apt install symfony-cli

# 10) Dossier app
WORKDIR /var/www

# (Optionnel) tu peux installer tes vendors ici si tu veux une image "prod" prête,
# sinon tu montes le code + vendor en volume en dev:
# COPY composer.json composer.lock ./
# RUN composer install --no-dev --prefer-dist --no-progress --no-interaction --optimize-autoloader
# COPY . .

# 11) Cron & Supervisor: fichiers par défaut (vides) pour permettre override par volumes
#    - Le docker-compose pourra monter:
#        ./docker/worker/crontab -> /etc/cron.d/kplan
#        ./docker/worker/supervisord.conf -> /etc/supervisor/conf.d/worker.conf
RUN touch /etc/cron.d/kplan \
 && chmod 0644 /etc/cron.d/kplan \
 && mkdir -p /etc/supervisor/conf.d


COPY ./docker/stack/worker/crontab /etc/cron.d/kplan
COPY ./docker/stack/worker/supervisord.conf /etc/supervisor/conf.d/worker.conf

# (Optionnel) tu peux installer tes vendors ici si tu veux une image "prod" prête,
# sinon tu montes le code + vendor en volume en dev:
COPY composer.json composer.lock ./
RUN composer install --no-dev --prefer-dist --no-progress --no-interaction --optimize-autoloader

WORKDIR /var/www
EXPOSE 80
