Jetez un oeil dans la documentation. C'est un avertissement, cependant, pas une erreur (voir le code). L'exécution de Celery sous root est une erreur uniquement lorsque vous autorisez la sérialisation de pickle qui n'est pas activée par défaut (voir ici).
Cependant, il est toujours préférable d'exécuter Celery avec des privilèges inférieurs. Dans Docker (avec une image basée sur Debian), je choisis d'exécuter Celery sous nobody
:nogroup
. J'utilise ce 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"]
où celery.sh
se présente comme suit :
#!/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