Контейнер Revel и Docker

Я пытаюсь создать Docker-контейнер, содержащий приложение-скелет. Кажется, что все в порядке, и контейнер создан, но когда я захожу на localhost:9000 в моем браузере ничего не появляется.
Чтобы убедиться, что моя среда работает должным образом, я создал простое приложение hello world go и создал для него Docker-контейнер. Он работал нормально, используя тот же порт 9000. Это заставляет меня думать, что что-то не настроено должным образом в моем файле Docker.

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:

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

После выполнения команды и создания контейнера консоль показывает:

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

Когда я перейду на localhost:9000, я ожидаю увидеть текст "Это работает"!

1 ответ

Решение

Вы слушаете localhost:9000, поэтому 127.0.0.1 указывает на ваш контейнер, а не на локальный компьютер.

У вас есть два решения, чтобы заставить его работать:

  • Послушай 0.0.0.0:9000
  • Используйте --network="host" в вашей команде запуска docker: 127.0.0.1 в вашем контейнере Docker будет указывать на ваш хост Docker.
Другие вопросы по тегам