ARG PHP_VERSION=8.2

# Ubuntu 22.04
FROM ubuntu:jammy

# Set timezone (needed for the following installs to work)
RUN ln -snf /usr/share/zoneinfo/UTC /etc/localtime && echo "UTC" > /etc/timezone

# Install libraries
RUN apt-get update && apt-get install -y --no-install-recommends --force-yes --fix-missing \
        acl \
        apt-transport-https \
        apt-utils \
        curl \
        git \
        gpg-agent \
        libc-client-dev \
        libcurl4-openssl-dev \
        libkrb5-dev \
        libmcrypt-dev \
        librabbitmq-dev \
        libssl-dev \
        libxml2-dev \
        locales \
        openssl \
        software-properties-common \
        ssh-client \
        unzip \
        wget \
        zip \
        zlib1g-dev

ENV OS_LOCALE="es_ES.UTF-8"
RUN locale-gen ${OS_LOCALE}
ENV LANG=${OS_LOCALE} \
    LANGUAGE=${OS_LOCALE} \
    LC_ALL=${OS_LOCALE}
RUN     dpkg-reconfigure locales

# Install PHP and extensions
RUN LC_ALL="C.UTF-8" add-apt-repository ppa:ondrej/php
RUN apt-get update
RUN apt-get install -y \
        php8.2-fpm \
        php8.2-cli \
        php-pear \
        php8.2-amqp\
        php8.2-amqp \
        php8.2-bcmath \
        php8.2-bz2\
        php8.2-common \
        php8.2-curl \
        php8.2-dev \
        php8.2-gd \
        php8.2-gmp \
        php8.2-imap \
        php8.2-intl\
        php8.2-mbstring \
        php8.2-mysql \
        php8.2-opcache \
        php8.2-pdo\
        php8.2-pgsql \
        php8.2-readline \
        php8.2-soap \
        php8.2-sqlite3\
        php8.2-tidy \
        php8.2-xml \
        php8.2-xmlrpc \
        php8.2-xsl \
        php8.2-xdebug \
        php8.2-zip

# Configure php.ini files (fpm/cli)
RUN sed -i "s/;date.timezone =.*/date.timezone = UTC/" /etc/php/8.2/cli/php.ini
RUN sed -i "s/;date.timezone =.*/date.timezone = UTC/" /etc/php/8.2/fpm/php.ini
RUN sed -i "s/display_errors = Off/display_errors = On/" /etc/php/8.2/fpm/php.ini
RUN sed -i "s/upload_max_filesize = .*/upload_max_filesize = 30M/" /etc/php/8.2/fpm/php.ini
RUN sed -i "s/post_max_size = .*/post_max_size = 12M/" /etc/php/8.2/fpm/php.ini
RUN sed -i "s/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/" /etc/php/8.2/fpm/php.ini
RUN sed -i -e "s/pid =.*/pid = \/var\/run\/php8.2-fpm.pid/" /etc/php/8.2/fpm/php-fpm.conf
RUN sed -i -e "s/error_log =.*/error_log = \/proc\/self\/fd\/2/" /etc/php/8.2/fpm/php-fpm.conf
RUN sed -i -e "s/;daemonize\s*=\s*yes/daemonize = no/g" /etc/php/8.2/fpm/php-fpm.conf
RUN sed -i "s/listen = .*/listen = 9000/" /etc/php/8.2/fpm/pool.d/www.conf
RUN sed -i "s/;catch_workers_output = .*/catch_workers_output = yes/" /etc/php/8.2/fpm/pool.d/www.conf
RUN sed -i "s/max_execution_time = .*/max_execution_time = 600/" /etc/php/8.2/fpm/php.ini
RUN sed -i "s/memory_limit = .*/memory_limit = 4096M/" /etc/php/8.2/fpm/php.ini
RUN sed -i "s/memory_limit = .*/memory_limit = 4096M/" /etc/php/8.2/cli/php.ini

# Install PHPUNIT
RUN wget  https://phar.phpunit.de/phpunit-7.5.phar > phpunit.phar && \
    chmod +x phpunit.phar &&  cp phpunit.phar /usr/local/lib/php

# Install Composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
ENV COMPOSER_ALLOW_SUPERUSER=1
RUN set -eux; \
        composer clear-cache
ENV PATH="${PATH}:/root/.composer/vendor/bin"

# Node.js and Yarn


RUN curl -LO https://nodejs.org/dist/v18.2.0/node-v18.2.0-linux-x64.tar.xz
RUN tar -xvf node-v18.2.0-linux-x64.tar.xz
RUN ls -lahS
RUN cp -r node-v18.2.0-linux-x64/bin /usr/
RUN cp -r node-v18.2.0-linux-x64/include /usr/
RUN cp -r node-v18.2.0-linux-x64/lib /usr/
RUN cp -r node-v18.2.0-linux-x64/share /usr/
RUN node --version

RUN curl https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list
RUN apt-get update -qq
RUN apt-get update && apt-get install -y yarn

# Copy DEV ssh key (needed for installing A4B composer libraries
RUN mkdir /root/.ssh
COPY ./dev_private_key /root/.ssh/dev_private_key

# Copy xdebug PHP config
COPY ./xdebug.ini /etc/php/8.2/fpm/conf.d/50-xdebug.ini

EXPOSE 9000
CMD ["php-fpm8.2"]