FROM ubuntu:latest
LABEL maintainer="support@uvdesk.com"

# Set environment variables to suppress interactive prompts
ENV DEBIAN_FRONTEND=noninteractive

# Install base packages and PHP dependencies
RUN apt-get update && \
    apt-get -y upgrade && \
    apt-get install -y software-properties-common && \
    add-apt-repository -y ppa:ondrej/php && \
    apt-get update && \
    apt-get install -y \
        apache2 \
        mysql-server \
        php8.2 \
        libapache2-mod-php8.2 \
        php8.2-common \
        php8.2-xml \
        php8.2-imap \
        php8.2-mysql \
        php8.2-mailparse \
        php8.2-curl \
        curl \
        wget \
        git \
        unzip \
        ca-certificates && \
    apt-get clean && rm -rf /var/lib/apt/lists/*

# Set ServerName to suppress Apache warning
RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf

# Enable Apache rewrite module
RUN a2enmod rewrite

# Set MySQL root password and allow root access
RUN mysqld --initialize-insecure && \
    mysqld --skip-networking --socket=/var/run/mysqld/mysqld.sock & \
    sleep 5 && \
    mysql -uroot -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH 'mysql_native_password' BY 'root';" && \
    mysql -uroot -e "FLUSH PRIVILEGES;" && \
    killall mysqld

# Install Composer
RUN wget -O /usr/local/bin/composer.php "https://getcomposer.org/installer" && \
    php /usr/local/bin/composer.php --quiet --install-dir=/usr/local/bin --filename=composer && \
    chmod +x /usr/local/bin/composer && \
    rm -f /usr/local/bin/composer.php

# Copy UVDesk source code
COPY . /var/www/uvdesk

# Set permissions for UVDesk files
RUN chown -R www-data:www-data /var/www/uvdesk && \
    chmod -R 775 /var/www/uvdesk/var \
                 /var/www/uvdesk/config \
                 /var/www/uvdesk/public \
                 /var/www/uvdesk/migrations \
                 /var/www/uvdesk/.env

# Install UVDesk dependencies
WORKDIR /var/www/uvdesk
RUN composer install && \
    composer dump-autoload --optimize && \
    php bin/console cache:clear --env=prod --no-debug || true

# Expose ports for Apache and MySQL
EXPOSE 80 3306

# Start Apache and MySQL services
CMD ["/bin/bash", "-c", "service mysql start && apachectl -D FOREGROUND"]