2015-08-27 3 views
1
docker pull kovacshuni/riptube:1.0.0-SNAPSHOT 
docker run -it -P --name="riptube" kovacshuni/riptube:1.0.0-SNAPSHOT 
bin/riptube & 
curl -X POST -d "Hi there" localhost:8082/notify 
INFO 15:55:06 c.h.r.NotificationReceiver$ - Hi there 

Так что это сработало. Но извне, от хозяина демон докеров, это не так. Несмотря на команду EXPOSE и параметр -P.Не удается получить доступ к приложению в контейнере для докеров

docker port riptube 8082 
0.0.0.0:32785 
curl -X POST -d "Hi there" localhost:32785/notify 
curl: (52) Empty reply from server 

Почему? :(:(

Исходный код here Dockerfile, а также, но вставив прямо ниже.

FROM frolvlad/alpine-oraclejdk8 

RUN apk add --update bash py-pip ca-certificates curl 
RUN rm -rf /var/cache/apk/* 
RUN pip install youtube-dl 

WORKDIR /opt/riptube 
ADD target/pack/ /opt/riptube 
EXPOSE 8082 
ENTRYPOINT /bin/bash 
CMD 
+0

Вы, кажется, привязываете свой сервер к порту 8080 в https://github.com/kovacshuni/riptube/blob/question/src/main/scala/com/hunorkovacs/riptube/RipTube.scala. Вы устанавливаете связь между открытым портом 8082 и связанным портом 8080 где-то? – jrudolph

+0

Мое главное приложение - RipTube, но для этого требуется сложная настройка. Для этого вопроса моя основная задача - в NotificationReceiver, где я привязываюсь к 8082. Так что это не так. Также сравнение: изнутри контейнера докера кудри работают до 8082, извне его нет. –

ответ

0

Предполагая, что вы не на машине Linux, я думаю, вы должны направить свой порт в виртуальной машине:

$ VBoxManage controlvm "name-of-your-vm" natpf1 "tcp-port8082,tcp,,8082,,8082" 
+0

Я знаю, но я тоже пробовал это на машине linux. Также на Mac, где я первый SSHed для docker deamon VM, и даже оттуда я не смог получить доступ к приложению. –

5

у меня была та же проблема:

заменить это:

private val httpBindingF = Http().bindAndHandle(ripController.route, "localhost", 8080) 

с этим:

private val httpBindingF = Http().bindAndHandle(ripController.route, "0.0.0.0", 8080) 

Удивительно, но это работает для меня!

+0

Спасибо за подсказку, я попробую это. –

+0

Это правильный ответ. 'localhost' жестко закодирован до' 127.0.0.1' в большинстве систем. – expert

+0

привет Хунор, ты пробовал? работает для вас? – fmasion

Смежные вопросы