# Simple working PHP setup using Ubuntu FROM ubuntu:20.04 # Prevent interactive prompts during package installation ENV DEBIAN_FRONTEND=noninteractive ENV TZ=Australia/Sydney # Install Apache, PHP and required extensions RUN apt-get update && apt-get install -y \ apache2 \ libapache2-mod-php7.4 \ php7.4 \ php7.4-mysql \ php7.4-gd \ php7.4-curl \ php7.4-mbstring \ php7.4-xml \ php7.4-zip \ php7.4-imap \ php7.4-intl \ php7.4-bcmath \ curl \ && rm -rf /var/lib/apt/lists/* # Enable Apache modules RUN a2enmod rewrite headers php7.4 # Configure PHP for CakePHP RUN { \ echo 'error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE & ~E_WARNING'; \ echo 'display_errors = On'; \ echo 'display_startup_errors = On'; \ echo 'log_errors = On'; \ echo 'max_execution_time = 300'; \ echo 'memory_limit = 256M'; \ echo 'post_max_size = 50M'; \ echo 'upload_max_filesize = 50M'; \ } > /etc/php/7.4/apache2/conf.d/99-cakephp.ini # Set up Apache virtual host RUN echo '\n\ ServerName localhost\n\ DocumentRoot /var/www/cmc-sales/app/webroot\n\ \n\ Options FollowSymLinks\n\ AllowOverride All\n\ Require all granted\n\ \n\ ErrorLog ${APACHE_LOG_DIR}/error.log\n\ CustomLog ${APACHE_LOG_DIR}/access.log combined\n\ ' > /etc/apache2/sites-available/000-default.conf # Create app directory structure RUN mkdir -p /var/www/cmc-sales/app/tmp/{cache,logs,sessions} \ && mkdir -p /var/www/cmc-sales/app/webroot/{pdf,attachments_files} # Set permissions RUN chown -R www-data:www-data /var/www/cmc-sales \ && chmod -R 777 /var/www/cmc-sales/app/tmp # Copy ripmime if it exists # COPY conf/ripmime* /usr/local/bin/ || true # RUN chmod +x /usr/local/bin/ripmime* 2>/dev/null || true # Set working directory WORKDIR /var/www/cmc-sales # Copy application (will be overridden by volume mount) COPY app/ /var/www/cmc-sales/app/ # Expose port 80 EXPOSE 80 # Start Apache in foreground CMD ["apache2ctl", "-D", "FOREGROUND"]