我有一个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 来测试脚本与另一个脚本的对比。抱歉措辞糟糕。
您的服务器代码应该监听所有网络接口(0.0.0.0),而不仅仅是本地主机接口