如何使用 - Express + Docker + Azure 映射端口

How to map ports with - Express + Docker + Azure

我完全卡在下面了。

正在尝试在 Azure VM 上的 docker 中设置快捷应用程序。

1) 使用 docker-machine create -driver azure 后 VM 一切正常 ...

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

如果有人可以用 VIP 与内部 vs docker 公开来解释 azure 的设置。

所以在这一切结束时,我尝试使用 Azure 访问的每个端口:

AzureVirtualIP:ALL_THE_PORT

我总是得到一个 ERR_CONNECTION_REFUSED

确定 Express 应用程序是 运行 因为我得到了控制台日志信息。

有什么想法吗?

谢谢

从外部开始,逐步深入,调试:

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 可能会给您一个没有转发端口的容器。

如果这行得通但第一次测试不行,则说明您没有正确打开 VM 的端口。可能是您需要设置 Azure 端点,或者您在 VM 上设置了防火墙 运行ning。

容器中

$ 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 上侦听,您需要检查设置。