FROM php:8.3-apache # System packages and PHP extensions RUN apt-get update \ && apt-get install -y --no-install-recommends \ git \ unzip \ pkg-config \ libpng-dev \ libjpeg62-turbo-dev \ libfreetype6-dev \ libwebp-dev \ libzip-dev \ libonig-dev \ && docker-php-ext-configure gd --with-freetype --with-jpeg --with-webp \ && docker-php-ext-install -j"$(nproc)" gd mysqli pdo pdo_mysql zip mbstring \ && a2enmod rewrite headers \ && a2dismod -f autoindex \ && rm -rf /var/lib/apt/lists/* # Apache listens on 8080 (Railway default) RUN sed -ri 's/80/8080/g' /etc/apache2/ports.conf EXPOSE 8080 WORKDIR /var/www/html # Install Composer COPY --from=composer:2 /usr/bin/composer /usr/bin/composer # Install PHP dependencies COPY composer.json composer.lock ./ RUN composer install --no-dev --no-interaction --prefer-dist --optimize-autoloader # Copy application COPY . . # Apache virtual host config COPY docker/apache.vhost.conf /etc/apache2/sites-available/000-default.conf # Set permissions RUN chown -R www-data:www-data /var/www/html # Copy and setup entrypoint script (fixes MPM at runtime) COPY docker-entrypoint.sh /usr/local/bin/ RUN chmod +x /usr/local/bin/docker-entrypoint.sh CMD ["/usr/local/bin/docker-entrypoint.sh"]