FROM php:7.4-fpm

ENV DEBIAN_FRONTEND=noninteractive

# Permet d'utiliser bash au lieu de sh par défaut dans docker desktop
RUN ln -sf /bin/bash /bin/sh

# ------------------------------------------------------------------
# Paquets de base + Composer
# ------------------------------------------------------------------
RUN set -eux; \
    apt-get update; \
    apt-get upgrade -y; \
    apt-get install -y --no-install-recommends \
        curl libmemcached-dev libz-dev libpq-dev \
        libjpeg-dev libpng-dev libfreetype6-dev libssl-dev \
        libwebp-dev libxpm-dev libmcrypt-dev libonig-dev \
        libicu-dev libcurl4-openssl-dev openssh-client \
        git unzip zip libzip-dev ca-certificates \
        nano wget dialog libsqlite3-dev libsqlite3-0 \
        default-mysql-client apt-utils build-essential \
        iputils-ping dnsutils vim; \
    rm -rf /var/lib/apt/lists/*

# ------------------------------------------------------------------
# Core PHP Extensions
# ------------------------------------------------------------------
RUN set -eux; \
    docker-php-ext-install pdo_mysql pdo_pgsql bcmath mysqli; \
    docker-php-ext-install curl; \
    docker-php-ext-configure gd --enable-gd --with-freetype --with-jpeg --with-webp; \
    docker-php-ext-install gd; \
    docker-php-ext-configure intl; \
    docker-php-ext-install -j$(nproc) intl; \
    docker-php-ext-configure zip; \
    docker-php-ext-install zip; \
    docker-php-ext-install tokenizer json mbstring gettext calendar exif; \
    php -r 'var_dump(gd_info());'

# ------------------------------------------------------------------
# Extension Redis via PECL
# ------------------------------------------------------------------
RUN set -eux; \
    pecl install redis-5.1.1 && \
    docker-php-ext-enable redis

# ------------------------------------------------------------------
# Xdebug Extension
# ------------------------------------------------------------------
RUN pecl install xdebug-3.1.4 && \
    docker-php-ext-enable xdebug && \
    mkdir /var/log/xdebug

# ------------------------------------------------------------------
# Imagick Extension
# ------------------------------------------------------------------
RUN apt-get update && \
    apt-get -y --no-install-recommends install --fix-missing libmagickwand-dev ghostscript && \
    pecl install imagick && \
    sed -i 's/<policy domain="coder" rights="none" pattern="PDF" \/>/<policy domain="coder" rights="read | write" pattern="PDF" \/>/' /etc/ImageMagick-6/policy.xml && \
    docker-php-ext-enable imagick && \
    rm -rf /var/lib/apt/lists/*

# ------------------------------------------------------------------
# XHProf Extension
# ------------------------------------------------------------------
RUN apt-get update && \
    apt-get -y --no-install-recommends install graphviz && \
    pecl install xhprof && \
    docker-php-ext-enable xhprof && \
    mkdir -p /var/tmp/xhprof && \
    rm -rf /var/lib/apt/lists/*

# Setup SSH directory and config
RUN mkdir -p /root/.ssh && \
    chmod 700 /root/.ssh && \
    touch /root/.ssh/known_hosts && \
    chmod 644 /root/.ssh/known_hosts && \
    ssh-keyscan github.com >> /root/.ssh/known_hosts

# Cleanup build leftovers
RUN rm -rf /usr/src/*

COPY certs /usr/local/share/ca-certificates/
RUN update-ca-certificates

# Create system user to run Composer and Artisan Commands
RUN useradd -G www-data,root -u 1000 -d /home/dev dev
RUN mkdir -p /home/dev/.composer && \
    chown -R dev:dev /home/dev

# Installation sécurisée de Composer
COPY --from=composer:latest /usr/bin/composer /usr/local/bin/composer
RUN chmod +x /usr/local/bin/composer

# Set working directory
WORKDIR /var/www/html
