Kijk eens in de documentatie. Het is echter een waarschuwing, geen fout (zie de code). Het uitvoeren van Celery onder root is alleen een fout wanneer u augurk-serialisatie toestaat die standaard niet is ingeschakeld (zie hier).
Het is echter nog steeds de beste gewoonte om Celery met lagere privileges uit te voeren. In Docker (met op Debian gebaseerde afbeelding) kies ik ervoor om Celery uit te voeren onder nobody
:nogroup
. Ik gebruik dit Dockerfile
:
FROM python:3.6
ENV PYTHONDONTWRITEBYTECODE=1 \
PYTHONUNBUFFERED=1
WORKDIR /srv/celery
COPY ./app app
COPY ./requirements.txt /tmp/requirements.txt
COPY ./celery.sh celery.sh
RUN pip install --no-cache-dir \
-r /tmp/requirements.txt
VOLUME ["/var/log/celery", "/var/run/celery"]
CMD ["./celery.sh"]
waar celery.sh
ziet er als volgt uit:
#!/usr/bin/env bash
mkdir -p /var/run/celery /var/log/celery
chown -R nobody:nogroup /var/run/celery /var/log/celery
exec celery --app=app worker \
--loglevel=INFO --logfile=/var/log/celery/worker-example.log \
--statedb=/var/run/celery/[email protected]%h.state \
[email protected]%h \
--queues=celery.example -O fair \
--uid=nobody --gid=nogroup