FROM php:7.4-apache

# Set working directory
WORKDIR /var/www/html/ng-crm/yiiapp

# Install required packages and PHP extensions
RUN apt-get update && apt-get install -y \
    sudo \
    libxml2-dev \
    libzip-dev \
    zlib1g-dev \
    libpng-dev \
    cron \
    vim \
    nano \
    git \
    curl \
    zip \           
    unzip \         
    && rm -rf /var/lib/apt/lists/* \
    && docker-php-ext-install \
    soap \
    gd \
    zip

    # && pecl install mongodb 

RUN pecl channel-update pecl.php.net && pecl install mongodb-1.11.1

# Enable MongoDB and SOAP extensions
RUN echo "extension=mongodb.so" > $PHP_INI_DIR/conf.d/mongo.ini
    # echo "extension=soap" > $PHP_INI_DIR/conf.d/required-extension.ini

# Configure PHP settings
RUN echo "upload_max_filesize=20M" > /usr/local/etc/php/conf.d/uploads.ini && \
    echo "post_max_size=25M" >> /usr/local/etc/php/conf.d/uploads.ini && \
    echo "memory_limit=1024M" > /usr/local/etc/php/conf.d/memory-limit.ini && \
    echo "error_log=/var/log/php/error.log" >> /usr/local/etc/php/conf.d/uploads.ini

# Enable Apache rewrite module
RUN a2enmod rewrite

# Add the sudoers configuration safely
RUN echo 'www-data ALL=(root) NOPASSWD: /usr/bin/crontab' | tee -a /etc/sudoers > /dev/null

ENV TZ=Asia/Dubai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

# Copy Apache configuration file
COPY ./deployment/apache2.conf /etc/apache2/sites-available/000-default.conf

# Restart Apache service
RUN service apache2 restart

# Copy Composer from the latest Composer image
COPY --from=composer:latest /usr/bin/composer /usr/local/bin/composer

# Copy application source code
COPY . .

RUN chmod 777 ./dockerBootstrap.sh
# Install PHP dependencies
RUN composer install

# Run the script once during container startup
CMD ["/bin/bash", "-c", "./dockerBootstrap.sh && apache2-foreground"]

# Expose port 80
EXPOSE 80