FROM php:8.4-fpm

# Set Environment Variables
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

#
#--------------------------------------------------------------------------
# Software's Installation
#--------------------------------------------------------------------------
#
# Installing tools and PHP extentions using "apt", "docker-php", "pecl",
#

# Install "curl", "libmemcached-dev", "libpq-dev", "libjpeg-dev",
#         "libpng-dev", "libfreetype6-dev", "libssl-dev", "libmcrypt-dev",
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 wget unzip zip libzip-dev ca-certificates \
        libssl-dev dnsutils iputils-ping 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-install ftp; \
    docker-php-ext-configure gd \
        --with-jpeg \
        --with-webp \
        --with-xpm \
        --with-freetype; \
    docker-php-ext-install gd; \
    docker-php-ext-configure intl; \
    docker-php-ext-install intl; \
    docker-php-ext-configure zip; \
    docker-php-ext-install zip; \
    docker-php-ext-configure pcntl; \
    docker-php-ext-install pcntl; \
    docker-php-ext-configure exif; \
    docker-php-ext-install exif; \
    php -r 'var_dump(gd_info());'

# ------------------------------------------------------------------
# Extension Redis via PECL
# ------------------------------------------------------------------
RUN set -eux; \
    apt-get update; \
    apt-get install -y --no-install-recommends build-essential pkg-config autoconf gcc make; \
    pecl install imagick && docker-php-ext-enable imagick; \
    pecl install redis && docker-php-ext-enable redis; \
    rm -rf /tmp/pear; \
    apt-get purge -y --auto-remove build-essential pkg-config autoconf gcc make; \
    rm -rf /var/lib/apt/lists/*

# ------------------------------------------------------------------
# Extension Imagick via PECL
# ------------------------------------------------------------------
RUN set -eux; \
    apt-get update; \
    apt-get install -y --no-install-recommends \
        build-essential \
        libmagickwand-dev \
        imagemagick; \
    pecl install imagick; \
    docker-php-ext-enable imagick; \
    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

# 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

# Set working directory
WORKDIR /var/www/html

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

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

