FROM docker.io/library/php:8.2-fpm-alpine
ARG APP_DEBUG=false
ARG XDEBUG_HOST=host.docker.internal

COPY ./cacert.pem /usr/local/etc/php/cacert.pem

COPY composer.sh /tmp
RUN chmod +x /tmp/composer.sh
RUN /bin/sh -c "/tmp/composer.sh"
RUN rm -f /tmp/composer.sh

RUN apk add --update --no-cache --virtual .ext-deps \
        libjpeg-turbo-dev \
        libwebp-dev \
        libpng-dev \
        jpeg-dev \
        postgresql-dev \
        libzip-dev \
        freetype-dev \
        libmcrypt-dev \
        autoconf \
        g++ \
        make \
        git \
        zlib \
        unzip \
        bash \
        openssl-dev \
        icu-dev \
        linux-headers
RUN \
    docker-php-ext-configure pdo_mysql && \
    docker-php-ext-configure pdo_pgsql && \
    docker-php-ext-configure zip && \
    docker-php-ext-configure opcache && \
    docker-php-ext-configure exif && \
    docker-php-ext-configure gd --with-jpeg && \
    docker-php-ext-configure intl && \
    docker-php-ext-configure sockets && \
    docker-php-ext-configure bcmath && \
    docker-php-ext-install -j$(nproc) gd && \
    docker-php-ext-install pdo_mysql pdo_pgsql zip opcache exif intl sockets bcmath

RUN \
    apk add --no-cache openssl-dev pcre-dev

RUN \
    pecl install redis && \
    pecl clear-cache && \
    docker-php-ext-enable redis && \
    docker-php-source delete

# Set time zone Moscow GMT+3
RUN apk add --no-cache tzdata
ENV TZ=Europe/Moscow

RUN apk add nodejs
RUN apk add npm
RUN apk upgrade

RUN apk add --no-cache supervisor busybox-suid
RUN mkdir -p /etc/supervisor.d
RUN mkdir -p /var/log/supervisor
RUN mkdir -p /var/www/html/storage/logs

COPY ./supervisord.conf /etc/supervisord.conf
COPY ./laravel-worker.conf /etc/supervisor.d/laravel-worker.conf
COPY ./sv-php-fpm.conf /etc/supervisor.d/sv-php-fpm.conf
COPY ./cron.conf /etc/supervisor.d/cron.conf

COPY ./crontab /etc/crontabs/www-data

COPY ./www.conf /usr/local/etc/php-fpm.d/www.conf

RUN if [ "$APP_DEBUG" = "true" ] ; \
    then pecl install xdebug \
             && docker-php-ext-enable xdebug \
             && echo "zend_extension=xdebug.so" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
             && echo "xdebug.mode=debug" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
             && echo "xdebug.client_host=${XDEBUG_HOST}" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
             && echo "xdebug.start_with_request=yes" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \ ; \
    fi

EXPOSE 80

CMD ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"]
