2

I am attempting to create a docker container that contains the revel skeleton app. Everything seems to build OK and the container is created but when I go to localhost:9000 in my browser nothing comes up.
To make sure my environment is working properly I created a simple hello world go app and created a docker container for it. It worked OK using the same port 9000. This makes me think that there is something not configured properly in my dockerfile.

Dockerfile:

#Compile stage
FROM golang:1.11.4-alpine3.8 AS build-env
ENV CGO_ENABLED 0
RUN apk add --no-cache git
ADD . /go/src/revelapp

# Install revel framework
RUN go get -u github.com/revel/revel
RUN go get -u github.com/revel/cmd/revel
#build revel app
RUN revel build revelapp app dev

# Final stage
FROM alpine:3.8
EXPOSE 9000
WORKDIR /
COPY --from=build-env /go/app /
ENTRYPOINT /run.sh

Docker command used:

docker build -t revelapp . && docker run -p 9000:9000 --name revelapp revelapp 

After command is executed and container is created the console shows:

INFO  17:25:01    app     run.go:32: Running revel server                      
INFO  17:25:01    app   plugin.go:9: Go to /@tests to run the tests.           
Revel engine is listening on.. localhost:9000

When I go to localhost:9000 I would expect to see the text It Works!

Tom Vaughan
  • 390
  • 2
  • 16

1 Answers1

4

You're listening on localhost:9000, so 127.0.0.1 points to your container and not your local machine.

You have two solutions to make it work:

  • Listen on 0.0.0.0:9000
  • Use --network="host" in your docker run command: 127.0.0.1 in your docker container will point to your docker host.
Jonathan Hall
  • 75,165
  • 16
  • 143
  • 189
alexandrevilain
  • 327
  • 1
  • 6
  • 1
    Where do you see port 8000? I can't find that in the question anywhere. – Michael Hampton Dec 30 '18 at 18:59
  • I'm pretty sure 8000 was a typo. The point being made is 0.0.0.0 instead of localhost, not the port. – Jonathan Hall Dec 30 '18 at 19:52
  • I am using windows docker CE so the network interface is bound to my local machine. As i said before, I tested using a simple hello world go app and same dockerfile. Everything worked fine using localhost:9000 – Tom Vaughan Dec 31 '18 at 04:43
  • I was able to get it to work by setting the http.addr to 0.0.0.0 in the Revel app.conf file. – Tom Vaughan Dec 31 '18 at 17:37