FROM php:8.1-apache # Install system dependencies RUN apt-get update && apt-get install -y \ git \ curl \ libpng-dev \ libonig-dev \ libxml2-dev \ zip \ unzip \ libzip-dev \ sudo \ && docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd zip # Install Xdebug RUN pecl install xdebug \ && docker-php-ext-enable xdebug # Configure Xdebug RUN echo "xdebug.mode=debug" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \ && echo "xdebug.start_with_request=yes" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \ && echo "xdebug.client_host=host.docker.internal" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \ && echo "xdebug.client_port=9003" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \ && echo "xdebug.discover_client_host=1" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \ && echo "xdebug.idekey=PHPSTORM" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini # Get latest Composer COPY --from=composer:latest /usr/bin/composer /usr/bin/composer # Configure Apache RUN a2enmod rewrite # Create a user with same UID as host user (will be overridden by docker compose) ARG USER_ID=1000 ARG GROUP_ID=1000 RUN groupadd -g ${GROUP_ID} appuser && \ useradd -u ${USER_ID} -g appuser -m appuser && \ usermod -a -G www-data appuser # Set working directory WORKDIR /var/www/html # Copy Apache configuration COPY ./apache/000-default.conf /etc/apache2/sites-available/000-default.conf # Create directories and set permissions RUN mkdir -p /var/www/html/storage/logs /var/www/html/vendor \ && chown -R appuser:www-data /var/www/html \ && chmod -R 775 /var/www/html # Switch to app user USER appuser # Expose port 80 EXPOSE 80