Контейнер 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.