# Used for prod build.
FROM php:8.2-fpm

# Set environment variables
ENV PHP_OPCACHE_ENABLE=1
ENV PHP_OPCACHE_ENABLE_CLI=0
ENV PHP_OPCACHE_VALIDATE_TIMESTAMPS=0
ENV PHP_OPCACHE_REVALIDATE_FREQ=0
ENV PHP_OPCACHE_MAX_FILE_SIZE=0
ENV PHP_UPLOAD_MAX_FILESIZE=40M
ENV PHP_POST_MAX_SIZE=40M

# Install dependencies.
RUN apt-get update && apt-get install -y unzip libpq-dev libcurl4-gnutls-dev nginx libonig-dev

# Install PHP extensions.
RUN docker-php-ext-install mysqli pdo pdo_mysql bcmath curl opcache mbstring

# Copy composer executable.
COPY --from=composer:2.3.5 /usr/bin/composer /usr/bin/composer

# Copy configuration files.
COPY ./docker/php/php.ini /usr/local/etc/php/php.ini
COPY ./docker/php/php-fpm.conf /usr/local/etc/php-fpm.d/www.conf
COPY ./docker/nginx/nginx.conf /etc/nginx/nginx.conf

# Set working directory to ...
WORKDIR /var/www/html

# Copy files from current folder to container current folder (set in workdir).
COPY --chown=www-data:www-data . .
RUN composer install

# Create laravel caching folders.
# RUN mkdir -p ./storage/framework
# RUN mkdir -p ./storage/framework/{cache, testing, sessions, views}
# RUN mkdir -p ./storage/framework/bootstrap
# RUN mkdir -p ./storage/framework/bootstrap/cache

# Adjust user permission & group.
RUN usermod --uid 1000 www-data
RUN groupmod --gid 1000  www-data
RUN chmod +x ./docker/entrypoint.sh

EXPOSE 80
# Run the entrypoint file.
CMD ["/bin/bash","/var/www/html/docker/entrypoint.sh"]
