gpt4 book ai didi

node.js - 带有 docker 的 Nodejs 端口无法访问

转载 作者:行者123 更新时间:2023-12-02 18:51:42 27 4
gpt4 key购买 nike

我正在尝试在 docker 容器内运行 Node 并在外部公开端口 8585。
我只想测试暴露端口的可访问性。

现在,为了简化问题,我从这个设置中排除了 Nginx,我只是想测试 nodejs+docker 端口。

设置:

Node :

const PORT = 8585;
const HOST = '127.0.0.1';
app.listen(PORT, HOST);

Dockerfile:
FROM node:11.10.1
ENV NODE_ENV production
WORKDIR /usr/src/app
COPY . .
RUN npm install --production --silent
EXPOSE 8585
CMD node index.js

docker -compose.yml
version: '2.1'

services:
mws-client:
image: mws-client
build: .
environment:
NODE_ENV: production
ports:
- '8585'

运行 docker 镜像:
docker run -p 8585:8585 --expose 8585 1085d876c882

运行输出:
$ docker run -p 8585:8585 --expose 8585 1085d876c882
About 2 run on http://127.0.0.1:8585
Running on http://127.0.0.1:8585

网络统计输出:
$ netstat -a | grep 8585
tcp46 0 0 *.8585 *.* LISTEN

docker ps:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
99d032ce1ad2 1085d876c882 "/bin/sh -c 'node in…" 7 minutes ago Up 7 minutes 0.0.0.0:8585->8585/tcp inspiring_hypatia

仍然 - 没有连接:
$ curl http://127.0.0.1:8585
curl: (52) Empty reply from server
$ curl http://127.0.0.1:80
<html><body><h1>It works!</h1></body></html>

请帮忙 - 显然我错过了一些基本的东西(相信我我用这么多的选择测试了它..)

最佳答案

问题不在于 Docker 或主机,问题在于 Node 应用程序。

你不应该绑定(bind)服务器来监听 127.0.0.1 .

更改您的代码并绑定(bind)到 0.0.0.0一切都会好起来的。

const PORT = 8585;
const HOST = '0.0.0.0';
app.listen(PORT, HOST);

你很适合测试
docker run -p 8585:8585 -it 1085d876c882


更新撰写
    ports:
- "8585:8585"

关于node.js - 带有 docker 的 Nodejs 端口无法访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57900916/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com