5

我无法通过在 dockerhttp://localhost:8000映像中运行来访问基于 nodejs 的服务。我正在使用 Docker for Mac ( https://docs.docker.com/docker-for-mac/ )

我正在关注这里的教程https://nodejs.org/en/docs/guides/nodejs-docker-webapp/

服务器在 8000 端口上运行。我使用以下内容启动 docker 映像:

$ docker run -p 8000:8000 -d geuis/node-server:latest

如果我跑步,docker ps我会看到:

CONTAINER ID        IMAGE                      COMMAND             CREATED             STATUS              PORTS                    NAMES
9fa2e446918b        geuis/node-server:latest   "npm start"         6 seconds ago       Up 5 seconds        0.0.0.0:8000->8000/tcp   unruffled_lewin

如果我docker exec -it 9fa2e446918b /bin/bash可以访问 docker vm,我可以curl http://localhost:8000从容器内部访问服务器。

curl http://localhost:8000但是,我从我的系统终端尝试了同样的操作,但它无法访问。

不知道接下来我需要做什么。

4

1 回答 1

6

试试下面的监听语句:

app.listen(PORT, '0.0.0.0');

从阅读您提到的教程看来,快递正在听localhost。如果您在本地运行但在容器内部运行,这很好,localhostlocalhost容器外部不同。

0.0.0.0未指定的 IPv4 地址,因此 Express 将绑定它可以找到的任何 IP,这将是您的请求从容器外部进入的 IP。

于 2017-05-19T08:02:45.203 回答