Search code examples
node.jsdockerdocker-machine

Connection refused when accessing web app through Docker


I'm pretty new to Docker, so I'm trying to take a node web app that I've written and Docker-ize it. The app is open source, so you can find it and the Dockerfile here: Paw-Wars

So you don't have to click through, the Dockerfile is here:

FROM mhart/alpine-node

WORKDIR /src
ADD . .

RUN npm install

EXPOSE  5050
COPY config.json /src/config.json
CMD npm run docker

So I open up the Docker Quickstart Terminal (I'm on Mac OS X), go to my path, and build it:

docker build -t paw-wars .

After it builds, I run it:

docker run paw-wars

And it spins up just fine and says it's listening on port 5050. I get the ip from docker-machine ip default, and try to connect to it on port 5050, but I get connection refused. Most searches I've done trying to solve this tell me that I need to make sure to use the correct IP, but I'm almost positive I'm doing that. Not really sure what I'm doing wrong. It's not in the repo, but I've also tried binding to 0.0.0.0 in my app (index.js), but that didn't work either.

Thanks!


Solution

  • The issue is that you MUST specify a port in your docker run command. I thought that using EXPOSE in your dockerfile is sufficient, but it's not. That's just to get the port exposed internally.

    docker run -p 5050:5050 paw-wars worked great.