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"]