运行 npm 从 Dockerfile 开始作为 ENTRYPOINT

run npm start as ENTRYPOINT from the Dockerfile

我正在尝试构建一个 docker 文件,我刚刚在其中启动一个 http-server。 我的 docker 文件是:

FROM ubuntu

RUN apt-get update
RUN apt-get install -y nodejs && apt-get install -y npm
COPY testing /testing
RUN cd testing
RUN npm install

ENTRYPOINT npm start

这里testing是项目目录,由index.html文件和package.json.

组成

我的package.json是:

{
  "name": "test",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "http-server -a 0.0.0.0 -p 5500"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "concurrently": "^5.0.2",
    "http-server": "^0.12.1"
  }
}

在我的本地机器上,服务器工作正常。我认为 cd testing 命令不合适并且 npm install 没有使用 package.json 文件。

docker 图像在图像 ID 下形成 - 6260786586cc

通过命令 运行 图像时的错误是:

使用 WORKDIR 指令代替 cd

WORKDIR testing

Dockerfile 中的每条指令在构建期间在单独的容器中执行。因此 运行 cd 在构建期间更改目录不起作用。