# Utiliser une image PHP 8.3 FPM (Ubuntu-based)
FROM php:8.4-fpm

# Arguments pour les permissions de fichiers
ARG UID
ARG GID

# Mettre à jour et installer les dépendances système requises
RUN apt-get update && apt-get install -y --no-install-recommends \
    # Outils de compilation et dépendances pour PHP extensions
    build-essential \
    libpq-dev \
    libzip-dev \
    libpng-dev \
    libjpeg-dev \
    libfreetype6-dev \
    libwebp-dev \
    libicu-dev \
    # Dépendance pour GMP (bibliothèque de développement)
    libgmp-dev \
    # Outils généraux
    zip \
    unzip \
    ffmpeg \
    jq \
    wget \
    nodejs \
    npm \
    postgresql-client \
    git \
    # Nettoyage des listes de paquets pour réduire la taille de l'image
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

# Installer le client HashiCorp Vault
ENV VAULT_VERSION=1.17.1
RUN wget https://releases.hashicorp.com/vault/${VAULT_VERSION}/vault_${VAULT_VERSION}_linux_amd64.zip -O vault.zip && \
    unzip vault.zip -d /usr/local/bin && \
    rm vault.zip

# Installer le client MinIO (mc)
RUN wget https://dl.min.io/client/mc/release/linux-amd64/mc -O /usr/local/bin/mc && \
    chmod +x /usr/local/bin/mc

RUN npm install -g mjml
# Configurer et installer les extensions PHP
# Utilisation de -j$(nproc) pour paralléliser la compilation et accélérer le build
RUN docker-php-ext-configure gd --with-freetype --with-jpeg --with-webp \
    && docker-php-ext-install -j$(nproc) gd pdo pdo_pgsql zip gmp bcmath intl exif

# Installer Redis via pecl
RUN pecl install redis && docker-php-ext-enable redis

# Installer Excimer via pecl
RUN pecl install excimer && docker-php-ext-enable excimer

RUN mkdir -p /opt/phpstorm-coverage && \
    chmod -R 777 /opt/phpstorm-coverage

# Installer Composer globalement
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
RUN mkdir -p /opt/phpstorm-coverage/ && chmod -R 777 /opt/phpstorm-coverage/

# Configuration PHP personnalisée
RUN echo "memory_limit=5G" > /usr/local/etc/php/conf.d/memory-limit.ini \
    && echo "upload_max_filesize=100M" > /usr/local/etc/php/conf.d/uploads.ini \
    && echo "post_max_size=200M" >> /usr/local/etc/php/conf.d/uploads.ini

# Créer un utilisateur et un groupe non-root pour l'application
# Utilisation de useradd/groupadd pour les systèmes basés sur Debian/Ubuntu
RUN groupadd -g $GID appuser && \
    useradd -u $UID -g appuser -ms /bin/bash appuser

# Changer pour l'utilisateur non-root
USER appuser
# Définir le répertoire de travail
WORKDIR /srv/app
