ASP.NET on Docker Not Serving Web App to Browser ASP.NET on Docker Not Serving Web App to Browser docker docker

ASP.NET on Docker Not Serving Web App to Browser


It turns out that the web application is available at the IP address of the virtual machine 192.168.99.100 as suspected. 172.17.0.2 was clearly some sort of red herring.

The real kicker seems to be that the container's default "internal" IP is 0.0.0.0

Following the excellent advice of this posting, I edited the Dockerfile and specified the following:

ENTRYPOINT ["dnx", "web", "--server.urls", "http://0.0.0.0:5000"]

Because...

This will allow our web application to serve requests that come in from the port forwarding provided by Docker which defaults to 0.0.0.0

The port mapping is crucial to link the host's port to the container's, but the EXPOSE command is apparently redundant. Now, when I run

docker run -i -t -p 80:5000 container_name

I can simply browse to http://192.168.99.100 (port 80 is implicit)

And viola! There's my "Hello World!"


Apart from using http://0.0.0.0:5000 you can use http://*.5000

ENTRYPOINT ["dnx", "web", "--server.urls", "http://*:5000"]

or you can include this against the runtimes environment

"commands": {    "kestrel": "Microsoft.AspNet.Hosting --server Microsoft.AspNet.Server.Kestrel --server.urls http://*:5004"},    "web": ......

and the entrypoint in the dockerfile can be

ENTRYPOINT ["dnx","-p","project.json","kestrel"]