我在微软天蓝云(一个名为eva的node.js应用程序和应用程序使用的postgres-db)的ubuntu linux系统上运行两个容器:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
339b252e9895 eva "node app.js" 17 hours ago Up 17 hours 0.0.0.0:8086->8086/tcp eva
91a39d88c1eb postgres "/usr/lib/postgresql/" 19 hours ago Up 19 hours 5432/tcp postgres
我在端口8086上公开了node.js应用程序并使用以下命令从映像启动容器:
sudo docker run --name eva -p 8086:8086 eva
我已经在azure控制台上打开了这个linux服务器的端口,并试图访问它,但chrome显示连接被拒绝错误。 我还尝试通过curl在本地访问它:
sudo curl --trace curl.out localhost:8086
这是curl.out:
== Info: Rebuilt URL to: localhost:8086/
== Info: Trying 127.0.0.1...
== Info: Connected to localhost (127.0.0.1) port 8086 (#0)
=> Send header, 78 bytes (0x4e) 0000: 47 45 54 20 2f 20 48 54 54 50 2f 31 2e 31 0d 0a GET / HTTP/1.1.. 0010: 48 6f 73 74 3a 20 6c 6f 63 61 6c 68 6f 73 74 3a Host: localhost: 0020: 38 30 38 36 0d 0a 55 73 65 72 2d 41 67 65 6e 74 8086..User-Agent 0030: 3a 20 63 75 72 6c 2f 37 2e 34 37 2e 30 0d 0a 41 : curl/7.47.0..A 0040: 63 63 65 70 74 3a 20 2a 2f 2a 0d 0a 0d 0a ccept: */*....
== Info: Recv failure: Connection reset by peer
== Info: Closing connection 0
我已经在我的MacOS上本地做了同样的工作。另外,我通过scp将源文件移动到linux系统来自己部署应用程序,并通过仅使用node命令在端口8085上运行应用程序;它也在起作用。
为什么我无法在ubuntu上的docker容器中访问我的node.js应用程序?
答案 0 :(得分:0)
好吧,坦克给fernandezcuesta很多!
我能够通过使用您建议的命令找到答案。在运行docker exec -it eva ss -tnlp
时,我意识到eva仍在侦听端口8085(由于该应用程序的另一个实例已经使用此端口,因此该实例实际上无法使用)。
在查看我的源代码的.env文件后,我意识到端口参数仍设置为8085.这导致node.js应用程序设置的http-server收听8085。
更改参数并再次部署应用后,我已经能够在端口8086上看到chrome中的应用。
我不知道为什么它会以这种方式在MacOS上运行,不过...... 但它现在可以在我的远程机器上运行,所以我很高兴:)
谢谢!