# Base image: Hyperf with PHP 8.3, Alpine, Swoole FROM hyperf/hyperf:8.3-alpine-v3.19-swoole-v6 USER root # Install Node.js (for Vite frontend build), PostgreSQL client, and PHP extensions RUN apk add --no-cache \ nodejs \ npm \ postgresql-dev \ php83-pdo_pgsql \ php83-pgsql # Enable extensions (only needed if they don't auto-enable) RUN echo "extension=pdo_pgsql.so" > /etc/php83/conf.d/01_pdo_pgsql.ini && \ echo "extension=pgsql.so" > /etc/php83/conf.d/00_pgsql.ini # Copy application code WORKDIR /var/app COPY . /var/app # Install Composer dependencies RUN composer install --no-dev --optimize-autoloader # Install Node dependencies and build frontend assets RUN npm ci --prefer-offline && npm run build && rm -rf node_modules # Expose Swoole HTTP port EXPOSE 9501 # Healthcheck endpoint (optional but works with Compose) HEALTHCHECK --interval=15s --timeout=5s --start-period=10s CMD curl -f http://localhost:9501/health || exit 1 # Run Hyperf Swoole server CMD ["php", "artisan", "start"]