FROM php:8.4-fpm-alpine # System dependencies RUN apk add --no-cache \ nginx \ supervisor \ libpng-dev \ libjpeg-turbo-dev \ freetype-dev \ libzip-dev \ icu-dev \ oniguruma-dev \ libxml2-dev \ zip \ unzip \ git \ nodejs \ npm # PHP extensions RUN docker-php-ext-configure gd --with-freetype --with-jpeg \ && docker-php-ext-install \ pdo_pgsql \ mbstring \ exif \ bcmath \ gd \ zip \ intl \ opcache # Composer COPY --from=composer:latest /usr/bin/composer /usr/bin/composer # PHP config RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini" COPY docker/php.ini /usr/local/etc/php/conf.d/retrohub.ini # Working directory WORKDIR /var/www/retrohub # Copy application COPY . . # Install dependencies RUN composer install --no-dev --optimize-autoloader --no-interaction --no-scripts \ && npm ci --omit=dev \ && npm run build # Generate key and optimize RUN php artisan key:generate --force \ && php artisan optimize:clear \ && php artisan optimize # Permissions RUN chown -R www-data:www-data /var/www/retrohub \ && chmod -R 755 /var/www/retrohub/storage \ && chmod -R 755 /var/www/retrohub/bootstrap/cache # Nginx config COPY docker/nginx.conf /etc/nginx/http.d/default.conf # Supervisor COPY docker/supervisord.conf /etc/supervisor/conf.d/supervisord.conf EXPOSE 80 CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/conf.d/supervisord.conf"]