如何使用 – Express + Docker + Azure来映射端口
我完全被困在以下。
尝试在Azure虚拟机上的Docker中设置快速应用程序。
1)使用docker-machine create -driver azure之后VM是好的…
2)build立完整的图像后:
//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
如果有人可以解释azure的VIP设置与内部VSdocker揭露。
所有这一切的最后,我试图用Azure的每一个端口:
AzureVirtualIP:ALL_THE_PORT
我总是得到一个ERR_CONNECTION_REFUSED
肯定快递应用程序正在运行,因为我得到控制台日志信息。
有任何想法吗?
谢谢
从外部开始,按照自己的方式进行debugging:
在Azure之外
<start your container on the Azure VM, then> $ curl $yourhost:80
在VM上
$ 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
显示你的端口转发是有效的。 如果您运行其他容器,没有正确的权限或有其他networking问题,Docker可能会给你一个容器,而不转发端口。
如果这样做,但第一个testing没有,那么你没有正确地打开你的虚拟机的端口。 可能是因为需要设置Azure端点,或者在虚拟机上运行了防火墙。
在容器中
$ docker run -p 80:8080 --name=test -d laslo 882a5e774d7004183ab264237aa5e217972ace19ac2d8dd9e9d02a94b221f236 $ docker exec it test bash # curl localhost:8080
在最后一个,我们进入容器本身。 apt-get install curl
可能没有安装,所以也许你必须先apt-get install curl
。
如果这不起作用,那么您的Express服务器不在端口80上侦听,您需要检查设置。
- 从Azure Passport身份validation节点js注销
- Azure上的Npm SELF_SIGNED_CERT_IN_CHAIN
- 我可以通过复制文件在Azure节点应用程序服务器上部署node.js吗?
- 使用包含Node.js项目的TeamCity构buildCloud Service包
- 使用Node.js在Azure托pipe上创buildWeb套接字服务器?
- Node.JS:Azure不会从package.json安装新的依赖项
- Mean.io在Azure VM上的奇怪行为
- 在Windows Azure模拟器中运行的Node.js Web应用程序
- ExpressJS:自定义错误模块不能识别此错误