I would go with the requirements file, but not because of Docker.
What if I move to a different platform, like Heroku? My Dockerfile won’t be read. What if I want to run some tests on my local machine? It may take a lot of time to build the image for the sake of one test, why don’t I install it in a plain virtualenv? But then again, the Dockerfile is of no use.
I tend to keep portability in mind when developing. Putting requirements in the Dockerfile would kill that.