[Fixed]-Docker + Celery tells me not to run as root, but once I don't, I lack permissions to run


Change your Dockerfile:

RUN useradd -ms /bin/bash celery
COPY . /app
RUN chown -R celery:celery /app
USER celery

And set C_FORCE_ROOT=false

Or, you can force container to run as non-user:

docker run --user 1000 -v /root/secrets.txt:/tmp/secrets.txt <img>


  1. If you want to specify a uid, you use the multi command, not worker, and you run the multi command as root. If you want to use worker just run the command without uid.
  2. You can also just set the C_FORCE_ROOT env variable to 1 and run this as root in docker if this is just for local development.

n.b., you may also need to update file permissions in case your celery task writes anything to the filesystem (like log files, or temp files).


Leave a comment