# https://hub.docker.com/_/php
# https://github.com/PrestaShop/docker/blob/master/base/images/7.4-fpm/Dockerfile
# https://devdocs.prestashop-project.org/1.7/basics/installation/system-requirements/
# https://github.com/docker-library/php/blob/b9f17156020c3aef71df681b27684533529347a7/7.4/bullseye/fpm/Dockerfile

FROM php:7.4-fpm

RUN set -ex; \
    apt-get update; apt-get install -y \
        lsof \
        nano \
        less \
        git \
        locales \
        wget \
        unzip \
    ; \
    rm -rf /var/lib/apt/lists/

RUN set -ex; \
        echo 'fr_FR.UTF-8 UTF-8' > /etc/locale.gen; \
        /usr/sbin/locale-gen

RUN set -ex; \
        apt-get update; apt-get install -y \
            libpcre3-dev \
            libonig-dev \
            libxml2-dev \
            libicu-dev \
            ghostscript \
        ; \
        rm -rf /var/lib/apt/lists/; \
        docker-php-source extract; \
        docker-php-ext-install iconv intl mbstring soap bcmath json; \
        docker-php-source delete;

RUN set -ex; \
        docker-php-source extract; \
        if [ -d "/usr/src/php/ext/zip" ]; then  \
            apt-get update; apt-get install -y \
                unzip \
                libzip-dev \
            ;\
            rm -rf /var/lib/apt/lists/; \
            docker-php-ext-install zip; \
        fi; \
        docker-php-source delete;

RUN set -ex; \
        docker-php-source extract; \
        if [ -d "/usr/src/php/ext/imap" ]; then  \
            apt-get update; apt-get install -y \
                libc-client-dev \
                libkrb5-dev \
            ;\
            rm -rf /var/lib/apt/lists/; \
            docker-php-ext-configure imap --with-imap-ssl --with-kerberos; \
            docker-php-ext-install imap; \
        fi; \
        docker-php-source delete;

RUN set -ex; \
        docker-php-source extract; \
        if [ -d "/usr/src/php/ext/gd" ]; then  \
            apt-get update; apt-get install -y \
                libpng-dev \
                libwebp-dev \
                libjpeg62-turbo-dev \
                libfreetype6-dev \
                libzip-dev \
            ; \
            rm -rf /var/lib/apt/lists/; \
            docker-php-ext-configure gd --with-freetype=/usr/include/ --with-jpeg=/usr/include/ --with-webp=/usr/include; \
            docker-php-ext-install gd; \
        fi; \
        docker-php-source delete;

RUN set -ex; \
        docker-php-source extract; \
        if [ -d "/usr/src/php/ext/mcrypt" ]; then  \
            apt-get update; apt-get install -y libmcrypt-dev; \
            rm -rf /var/lib/apt/lists/; \
            docker-php-ext-install mcrypt; \
        fi; \
        docker-php-source delete;

RUN set -ex; \
        docker-php-source extract; \
        if [ -d "/usr/src/php/ext/mysqli" ]; then  \
            apt-get update; apt-get install -y default-mysql-client; \
            rm -rf /var/lib/apt/lists/; \
            docker-php-ext-install mysqli; \
        fi; \
        docker-php-source delete;

RUN set -ex; \
        docker-php-source extract; \
        if [ -d "/usr/src/php/ext/pdo_mysql" ]; then  \
            apt-get update; apt-get install -y default-mysql-client; \
            rm -rf /var/lib/apt/lists/; \
            docker-php-ext-install pdo_mysql; \
        fi; \
        docker-php-source delete;

RUN set -ex; \
        docker-php-source extract; \
        if [ -d "/usr/src/php/ext/opcache" ]; then \
            docker-php-ext-install opcache; \
            { \
                echo 'opcache.memory_consumption=128'; \
                echo 'opcache.interned_strings_buffer=8'; \
                echo 'opcache.max_accelerated_files=4000'; \
                echo 'opcache.revalidate_freq=60'; \
                echo 'opcache.fast_shutdown=1'; \
                echo 'opcache.enable_cli=1'; \
            } >> /usr/local/etc/php/conf.d/docker-php-ext-opcache.ini; \
        fi; \
        docker-php-source delete;

RUN set -ex; \
        apt-get update; apt-get install -y libmagickwand-dev; \
        rm -rf /var/lib/apt/lists/; \
        docker-php-source extract; \
        pecl install imagick-3.4.4; \
        docker-php-ext-enable imagick; \
        docker-php-source delete;

RUN set -ex; \
        pecl install redis;

RUN set -ex; \
        { \
            echo 'date.timezone = Europe/Paris'; \
        } > /usr/local/etc/php/conf.d/php_local.ini;
