首页 > 解决方案 > 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!”?

标签: node.jsdockerdockerfile

解决方案


我会在您的 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


推荐阅读