Bug? Unable to access webserver via docker because it binds to localhost

I spent a lot of time attempting to run prodigy in docker and unable to access it, despite publishing port 8080.

I'm running docker on my Mac (so via the weird VM thing that Docker does). I see that it binds to localhost rather than 0.0.0.0.

INFO:     Uvicorn running on http://localhost:8080 (Press CTRL+C to quit)

Localhost is only available within the container, and is not exposed outside of docker. The webserver should bind to 0.0.0.0 or ::instead. Of course, what is necessary for docker might be undesirable when running on your local machine -- binding to localhost on your machine will prevent others from accessing it over the network.

I am a bit confused because I'm sure others must be running prodigy inside of a docker container and I don't see how that would work for them.

I eventually found PRODIGY_HOST, and the solution is to set it to 0.0.0.0. I googled A LOT but didn't find the support forum posts (like this one).

As an aside, i initially ran into a series of errors where prodigy was unable to bind to (::1, 8080), and found a few similar reports on the forums (e.g.). In my case this is because docker support for ipv6 is experimental on mac, and so ::1 IP doesn't exist. Setting PRODIGY_HOST also fixes this.

At the very least, I think the deployment docs could be more clear.

Hi @James ,

Thank you for sharing your debugging process and the solution with the community. I've tagged your post so that hopefully more users can find it easier. Independently, we'll definitely revise the docs to make them to cover the issues you've encountered and make them more comprehensive.