FROM php:8.3-fpm

# Set Environment Variables
ENV DEBIAN_FRONTEND=noninteractive
ENV COMPOSER_ALLOW_SUPERUSER=1
# Default to production
ENV APP_ENV=production

# 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 \
    ffmpeg \
    libmemcached-dev \
    libz-dev \
    libpq-dev \
    libjpeg-dev \
    libpng-dev \
    libfreetype6-dev \
    libssl-dev \
    libwebp-dev \
    libxpm-dev \
    libmcrypt-dev \
    libonig-dev \
    netcat-traditional \
    git \
    curl \
    zip \
    zlib1g-dev \
    libicu-dev \
    g++ \
    unzip; \
    rm -rf /var/lib/apt/lists/*

RUN set -eux; \
    # Install the PHP pdo_mysql extention
    docker-php-ext-install pdo_mysql; \
    # Install the PHP pdo_pgsql extention
    docker-php-ext-install pdo_pgsql; \
    # Install the PHP gd library
    docker-php-ext-configure gd \
    --prefix=/usr \
    --with-jpeg \
    --with-webp \
    --with-xpm \
    --with-freetype; \
    # Install exif
    docker-php-ext-install exif; \
    # Install gd
    docker-php-ext-install gd; \
    # Install bcmath
    docker-php-ext-install bcmath;

RUN docker-php-ext-configure intl
RUN docker-php-ext-install intl

RUN docker-php-ext-install pcntl
RUN docker-php-ext-configure pcntl --enable-pcntl

# Get latest Composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer

# Create system user to run Composer and Artisan Commands
RUN useradd -G www-data,root -u 1000 -d /home/app www

RUN mkdir -p /home/app/.composer && \
    chown -R www:www /home/app

WORKDIR /var/www

COPY composer.json composer.lock ./

RUN composer install --optimize-autoloader --no-scripts --ignore-platform-req=ext-zip

COPY . .

RUN chown -R 1000:1000 /var/www

USER www

CMD ["php-fpm"]