Cannot access server running in container from host

Viewed 3820

I have a simple Dockerfile

FROM golang:latest
RUN mkdir -p /app
WORKDIR /app
COPY . .
ENV GOPATH /app
RUN go install huru
EXPOSE 3000
ENTRYPOINT /app/bin/huru

I build like so:

docker build -t huru .

and run like so:

docker run -it -p 3000:3000 huru

for some reason when I go to localhost:3000 with the browser, I get

enter image description here

I have exposed servers running in containers to the host machine before so not sure what's going on.

3 Answers

From the information provided in the question if you see logs of the application (docker logs <container_id>) than the docker application starts successfully and it looks like port exposure is done correctly.

In any case in order to see ports mappings when the container is up and running you can use:

docker ps 

and check the "PORTS" section

If you see there something like 0.0.0.0:3000->3000/tcp

Then I can think about some firewall rules that prevent the application from being accessed...

Another possible reason (although probably you've checked this already) is that the application starts and finishes before you actually try to access it in the browser.

In this case, docker ps won't show the exited container, but docker ps -a will.

The last thing I can think of is that in the docker container itself the application doesn't really answer the port 3000 (I mean, maybe the startup script starts the web server on some other port, so exposing port 3000 doesn't really do anything useful).

In order to check this you can enter the docker container itself with something like docker exec -it <container_id> bash

and check for the opened ports with lsof -i or just wget localhost:3000 from within the container itelf

Try this one, if this has any output log. Please check them...

FROM golang:latest
RUN apt -y update
RUN mkdir -p /app
COPY . /app
RUN go install huru
WORKDIR /app

docker build -t huru:latest .
docker run -it -p 3000:3000 huru:latest bin/huru
Related