node.js - Docker Build 无法创建 server.js
问题描述
我正在编写 Docker 教程,并且正在学习 docker build。在教程中,这是 docker 文件
FROM ubuntu:14.04
RUN apt-get update -y
RUN apt-get install -y curl
RUN curl -sL https://deb.nodesource.com/setup_4.x | bash -
RUN apt-get install -y node.js
COPY server.js /
EXPOSE 8080
CMD [ "node", "/server.js"]
在与 dockerfile 相同的目录中有一个 server.js 文件:
// Load the http module to create an http server.
var http = require('http');
// Configure our HTTP server to respond with Hello World to all requests
var server = http.createServer(function (request, response) {
response.writeHead(200, {"Content-Type": "Text/plain"});
response.end("Hello world!");
})
// Listen on port 8080
server.listen(8080, function() {
console.log('Server listening...');
})
从命令行我运行 docker build:docker build -t ahawkins/docker-into-hello-world .
然后我从上图中运行容器:docker run -d -p 8080:8080 ahawkins/docker-intro-hello-world
我希望 acurl localhost:8080
回应"Hello world!"
,但我得到:
curl: (52) Empty reply from server
我 ssh 进入容器,发现它server.js
在哪里找不到,而且我什至找不到节点安装。
我是否正确安装了节点?我应该期望server.js
在操作系统的根目录中看到一个文件吗?为什么我在 curl 命令中没有看到“Hello World!”?
解决方案
我会在您的 Dockerfile 中尝试以下操作,构建并尝试再次运行。我将“/”替换为“。” 从 COPY 命令将其自由插入到图像中。(将 server.js 放在构建 Dockerfile 的同一目录中。)
FROM ubuntu:14.04
RUN apt-get update -y
RUN apt-get install -y curl
RUN curl -sL https://deb.nodesource.com/setup_4.x | bash -
RUN apt-get install -y node.js
COPY server.js .
EXPOSE 8080
CMD [ "node", "server.js"]
您是否尝试过打开浏览器并输入“localhost:8080”来查看“Hello World”消息?
我希望这可能会有所帮助。之前已经给出的答案也有一个很好的链接到平滑文档。
我使用的参考资料/资源:Bret Fisher 的 Udemy Class
推荐阅读
- android-recyclerview - RecyclerView ListAdapter 不显示任何项目
- python - PyCharm 安装
- android - MissingPluginException(在通道 plugins.flutter.io/path_provider 上找不到方法 getApplicationDocumentsDirectory 的实现)
- javascript - 在对象中添加照片并显示它
- django - Django + Nginx + Gunicorn - 为什么我的 TTFB 这么高?
- python - 数据框字符串拆分列
- c# - 如何最好地修改碰撞器以影响角色的拾取区域?
- mysql - 如何从 docker 容器中恢复 mysql 数据文件
- python - 我们如何创建返回 Set 而不是 tuple 或 list 的 Powerset
- c# - C# .NET 使用 Trello REST API 更新卡片上的自定义字段项