# BookWyrm Worker Container - Production Optimized # Celery background task processor FROM bookwyrm-base AS bookwyrm-worker LABEL org.opencontainers.image.title="BookWyrm Worker" \ org.opencontainers.image.description="BookWyrm Celery background task processor" # Switch to root for system package installation USER root # Install only supervisor for worker management RUN apt-get update && apt-get install -y --no-install-recommends \ supervisor \ && apt-get autoremove -y \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* # Install Celery in virtual environment (pinned for reproducible builds) RUN /opt/venv/bin/pip install --no-cache-dir 'celery[redis]>=5.6.0,<6.0.0' # Copy worker-specific configuration COPY supervisord-worker.conf /etc/supervisor/conf.d/supervisord.conf COPY entrypoint-worker.sh /entrypoint.sh # Set permissions efficiently RUN chmod +x /entrypoint.sh \ && chown -R bookwyrm:bookwyrm /app # Health check for worker HEALTHCHECK --interval=60s --timeout=10s --start-period=60s --retries=3 \ CMD /opt/venv/bin/celery -A celerywyrm inspect ping -d celery@$HOSTNAME || exit 1 ENTRYPOINT ["/entrypoint.sh"] CMD ["supervisord", "-c", "/etc/supervisor/conf.d/supervisord.conf"]