# Use PHP 7.4 with Apache (compatible with Laravel 5.2 and ARM64) FROM php:7.4-apache # Install system dependencies RUN apt-get update && apt-get install -y \ git \ curl \ libpng-dev \ libonig-dev \ libxml2-dev \ libzip-dev \ zip \ unzip \ libfreetype6-dev \ libjpeg62-turbo-dev \ openssh-client \ && docker-php-ext-configure gd --with-freetype --with-jpeg \ && docker-php-ext-install -j$(nproc) gd # Install PHP extensions RUN docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath zip # Enable Apache mod_rewrite RUN a2enmod rewrite # Install Composer COPY --from=composer:1.10 /usr/bin/composer /usr/bin/composer # Set working directory WORKDIR /var/www/html # Copy existing application directory contents COPY . /var/www/html # Copy and set permissions for entrypoint script COPY docker-entrypoint.sh /usr/local/bin/ RUN chmod +x /usr/local/bin/docker-entrypoint.sh # Create storage directories and set permissions RUN mkdir -p storage/framework/views \ storage/framework/cache \ storage/framework/sessions \ storage/logs \ bootstrap/cache # Set proper ownership and permissions RUN chown -R www-data:www-data /var/www/html \ && chmod -R 775 /var/www/html/storage \ && chmod -R 775 /var/www/html/bootstrap/cache # Create .env file if it doesn't exist RUN if [ ! -f .env ]; then cp .env.example .env; fi # Install PHP dependencies without running post-install scripts RUN composer install --no-dev --no-scripts --no-interaction # Generate application key RUN php artisan key:generate # Optimize autoloader RUN composer dump-autoload --optimize --no-dev # Configure Apache DocumentRoot to point to Laravel's public directory ENV APACHE_DOCUMENT_ROOT=/var/www/html/public RUN sed -ri -e 's!/var/www/html!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/sites-available/*.conf RUN sed -ri -e 's!/var/www/!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/apache2.conf /etc/apache2/conf-available/*.conf # Suppress Apache ServerName warning RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf # Expose port 80 EXPOSE 80 # Set entrypoint ENTRYPOINT ["docker-entrypoint.sh"] # Start Apache CMD ["apache2-foreground"]