I'm using Docker for Mac
. I have a container that run a server, for example my server is run on port 5000. I have exposed this port on Dockerfile
When my container is running, I connect to this container and check and if this server is working or not by running below command and see that it returns data (a bunch of html and javascript)
wget -d localhost:5000
Notes, I start this container and also publish port outside by command:
docker run -d -p 5000:5000 <docker_image_name>
But at docker host (is my mac and running El Capitan), I open chrome and go to address localhost:5000
. It doesn't work. Just a little note, if I go to any arbitrary port such as localhost:4000
I see error message from chrome such as:
This site can’t be reached
localhost refused to connect.
But error message for localhost:5000
is:
The localhost page isn’t working
localhost didn’t send any data.
So it seems I have configured work "a little" but something wrong. Please tell me how to fix this.
Please check the program in container is listening on interface 0.0.0.0.
In container, run command:
If it appears like:
that means your web app only listen at localhost so container host cannot access to your web app. You should make your server listen at
0.0.0.0
interface by changing your web app build setting.For example if your server is nodejs app:
If your server is web pack:
I had this problem using Docker for Mac, trying to run an Angular2 app.
I fixed the issue by changing my package.json to