FROM pixelfed-base AS pixelfed-worker

# Install supervisor for worker management
RUN apk add --no-cache supervisor

# Worker-specific PHP configuration for background processing
RUN echo "memory_limit = 512M" >> /usr/local/etc/php/conf.d/worker.ini \
    && echo "max_execution_time = 300" >> /usr/local/etc/php/conf.d/worker.ini \
    && echo "max_input_time = 300" >> /usr/local/etc/php/conf.d/worker.ini \
    && echo "pcntl.enabled = 1" >> /usr/local/etc/php/conf.d/worker.ini

# Copy worker-specific configuration files
COPY supervisord-worker.conf /etc/supervisor/conf.d/supervisord.conf
COPY entrypoint-worker.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh

# Create supervisor directories
RUN mkdir -p /var/log/supervisor

# Health check for worker container (check horizon status)
HEALTHCHECK --interval=60s --timeout=10s --start-period=60s --retries=3 \
    CMD su-exec pixelfed php /var/www/pixelfed/artisan horizon:status || exit 1

# Run as root to manage processes
USER root

ENTRYPOINT ["/entrypoint.sh"]
CMD ["supervisord", "-c", "/etc/supervisor/conf.d/supervisord.conf"] 