FROM php:8.3-fpm-bookworm

# Copie des configs PHP-FPM et php.ini
COPY php/www.conf /usr/local/etc/php-fpm.d/www.conf
COPY php/php-dev.ini /usr/local/etc/php/php.ini

# Paquets de base + client MySQL officiel (mysqldump) + outils
RUN apt-get update && apt-get install -y \
    default-mysql-client \
    git unzip curl ca-certificates \
    # libs pour extensions PHP
    libicu-dev zlib1g-dev libzip-dev \
    libpng-dev libjpeg-dev libwebp-dev libfreetype6-dev \
    libmagickwand-dev \
    libssh2-1-dev \
    # outils images
    imagemagick ghostscript jpegoptim optipng pngquant webp \
    # autres
    openssh-client pkg-config build-essential \
 && rm -rf /var/lib/apt/lists/*

# Extensions PHP (dans des couches séparées pour la clarté)
# GD nécessite une configuration explicite sous Debian
RUN docker-php-ext-configure gd \
    --with-freetype \
    --with-jpeg \
    --with-webp \
 && docker-php-ext-install -j"$(nproc)" \
    gd \
    intl \
    zip \
    exif \
    mysqli \
    pdo_mysql

# PECL: imagick + ssh2
RUN pecl install imagick \
 && docker-php-ext-enable imagick \
 && pecl install ssh2 \
 && docker-php-ext-enable ssh2

COPY php/imagemagick/policy.xml /etc/ImageMagick-6/policy.xml
RUN convert -version && magick identify -list policy || true

# sodium est intégré à PHP 8.x; si nécessaire, l’activer explicitement
RUN docker-php-ext-enable sodium || true

# Composer
RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" \
 && php composer-setup.php --install-dir=/usr/local/bin --filename=composer \
 && php -r "unlink('composer-setup.php');"

# (Optionnel) Wrapper mysqldump pour désactiver SSL en dev
# Utile si ton serveur MySQL présente un certificat autosigné et que tu n’as pas de CA côté client.
# Si tu as un CA valide, COMMENTE ces 3 lignes.
RUN printf '#!/bin/sh\nexec /usr/bin/mysqldump --ssl=false "$@"\n' > /usr/local/bin/mysqldump \
 && chmod +x /usr/local/bin/mysqldump

# Utilisateur applicatif "laravel"
RUN groupadd -r laravel \
 && useradd -r -g laravel -s /bin/bash -m laravel

# Préparation du dossier applicatif
RUN mkdir -p /var/www/html \
 && chown -R laravel:laravel /var/www/html

USER laravel
WORKDIR /var/www/html
