# ── My Diaspora Nexus – PHP API Backend ───────────────────────────────────
# Uses PHP 8.2-FPM + Nginx for production-grade serving.
# For quick dev use the built-in server (see docker-compose).
#
FROM php:8.2-fpm-alpine AS base

# Install required PHP extensions
RUN apk add --no-cache \
  nginx \
  supervisor \
  curl \
  libxml2-dev \
  && apk add --no-cache --virtual .build-deps $PHPIZE_DEPS \
  && docker-php-ext-install pdo pdo_mysql mysqli \
  && docker-php-ext-enable mysqli \
  && apk del .build-deps \
  && rm -rf /var/cache/apk/*

# Copy nginx configuration
COPY docker/nginx.conf /etc/nginx/http.d/default.conf

# Copy supervisor config (manages php-fpm + nginx)
COPY docker/supervisord.conf /etc/supervisord.conf

WORKDIR /var/www/html

# Copy application source
COPY . .

# Create runtime state directory (for the JSON state store) and uploads
RUN mkdir -p /var/www/html/database/runtime /var/www/html/apply/member/uploads \
  && chown -R www-data:www-data /var/www/html

# Use entrypoint shell script to ensure permissions on mounted runtime dir
COPY docker/entrypoint.sh /usr/local/bin/entrypoint.sh
RUN chmod +x /usr/local/bin/entrypoint.sh

EXPOSE 8080

HEALTHCHECK --interval=20s --timeout=5s --start-period=15s --retries=3 \
  CMD curl -sf http://localhost:8080/health | grep -q '"success":true' || exit 1

ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
CMD ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"]
