2015-06-02 2 views
1

Я полностью застрял на следующем.Как сопоставить порты с - Express + Docker + Azure

Попытка настроить экспресс-приложение в докере на Azure VM.

1) VM все хорошо после использования Докер-машины создают -driver лазурь ...

2) Построить изображение все хорошо после:

//Dockerfile 
FROM iojs:onbuild 

ADD package.json package.json 
ADD src src 

RUN npm install 

EXPOSE 8080 
CMD ["node", "src/server.js"] 

Вот где я застрял:

Я попытался все следующие плюс многое другое:

• docker run -P (Then adding end points in azure) 
• docker run -p 80:8080 
• docker run -p 80:2756 (2756, the port created during docker-machine create) 
• docker run -p 8080:80 

Если кто-то может объяснить Азу re с приложением VIP vs internal vs docker.

Так в конце всего этого, каждый порт, который я пытаюсь ударить с Azure'S:

AzureVirtualIP:ALL_THE_PORT 

Я просто всегда получить обратно ERR_CONNECTION_REFUSED

Конечно экспресс-приложение работает, потому что я получаю информация о журнале консоли.

Любые идеи?

Благодаря

ответ

3

Начиная с внешней стороны и продвигаясь в, отладка:

Снаружи Azure

<start your container on the Azure VM, then> 

$ curl $yourhost:80 

О В.М.

$ docker run -p 80:8080 -d laslo 
882a5e774d7004183ab264237aa5e217972ace19ac2d8dd9e9d02a94b221f236 
$ docker ps 
CONTAINER ID IMAGE   COMMAND    CREATED  STATUS  PORTS    NAMES 
64f4d98b9c75 laslo:latest node src/server.js 5 seconds ago up 5 seconds 0.0.0.0:80->8080 something_funny 
$ curl localhost:80 

То, что 0.0.0.0:80->8080 показывает, что ваша переадресация портов действует. Если вы запускаете другие контейнеры, не имеете правильных привилегий или других сетевых проблем, Docker может предоставить вам контейнер без пересылки портов.

Если это работает, но первый тест не выполнен, то вы не открыли порты на виртуальной машине правильно. Возможно, вам нужно настроить конечную точку Azure, или что у вас есть брандмауэр, работающий на виртуальной машине.

В контейнере

$ docker run -p 80:8080 --name=test -d laslo 
882a5e774d7004183ab264237aa5e217972ace19ac2d8dd9e9d02a94b221f236 
$ docker exec it test bash 
# curl localhost:8080 

В этом последнем, мы получаем внутри самого контейнера. Curl не может быть установлен, так что, возможно, вам нужно сначала apt-get install curl.

Если это не сработает, то ваш Express-сервер не прослушивает порт 80, и вам необходимо проверить настройку.

+0

Спасибо Натаниэль, я проверю это. Я бросил на Azure вскоре после публикации этого и перешел в цифровой океан, который работал из коробки. Спасибо за подробный ответ! –

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