docker 公开/发布的端口不工作

问题描述 投票:0回答:1

我有一个web服务器(JS)我想运行到容器中,它运行但我无法从主机连接到它。 我是一个 docker noob,所以我使用了一个基本的脚本和 Dockerfile,它们适用于 go server 的类似情况

这是剧本

#!/usr/bin/env bash
docker image build --file Dockerfile --tag guess-image .
docker container run --detach  --publish 3000:3000 --rm --name guess-container guess-image

这是 Dockerfile

FROM alpine

# download the file with server
RUN wget address/where/to/download/zipped-JS.server

# extract
RUN apk add unzip
RUN unzip server.zip
WORKDIR ./server/

#unrelated stuff
...
    
# install javascript and install the server
RUN apk add npm
RUN npm install

# exposing port 3000
EXPOSE 3000

# run server
RUN node server.js

这里是码头工人

ps result

CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS          PORTS      NAMES
5c8028cb79c3   3723e0b6e109   "/bin/sh -c 'node se…"   57 seconds ago   Up 57 seconds   3000/tcp   quirky_buck

当没有 dockerized 时,JS 服务器在浏览到 http://localhost:3000/ 时运行完美 我选择不粘贴 JS 服务器,但如果您认为相关,我可以这样做。

欢迎对这些脚本发表任何评论 (例如:我的直觉告诉我它远没有尽可能精简,而且命名也远非我所期望的......)


按照 David 的指示进行编辑,将最后一行更改为

# run server
CMD ["node" ,"server.js"]

成功了


编辑 这不是一个 web 服务器,只是一个简单的本地服务器,它在浏览器中运行并提供 UI 来测试脚本与另一个脚本的对比。抱歉措辞糟糕。

docker dockerfile port
1个回答
1
投票

您的服务器代码应该监听所有网络接口(0.0.0.0),而不仅仅是本地主机接口

© www.soinside.com 2019 - 2024. All rights reserved.