无法运行官方Docker教程容器:npm ERR!缺少脚本:开始

问题描述

这令人沮丧,但我在这里。 我正拼命尝试阅读Docker教程的part 2
这是我的问题:
成功为应用程序创建映像后,我尝试使用命令行(sudo) docker run --publish 8000:8080 --detach --name bb bulletinboard:1.0,该命令行应运行一个容器并允许我在localhost:8000访问该应用程序。
但是,当检出docker ps时,什么也没做,所以我用docker ps -a找回了我的容器,并用STATUS Exited (1)找到了它。 然后,我尝试docker logs bb来查找更多信息,并得到以下信息:
npm ERR! missing script: start。 知道它来自文档,这真是令人惊讶,我不知道下一步该怎么做。如果有人有任何线索,那就太好了。预先谢谢你

解决方法

该错误消息表示npm无法找到包含名为start的脚本的package.json文件。因此,请确保您的package.json包含一个名为start的脚本!可能已经是问题了。

// Simple package.json example that contains a script with name test.
{
    "scripts": {
      "test": "echo \"Error: no test specified\" && exit 1"
    },}

当您查看本教程的dockerfile时:

这可以确保命令在特定的文件夹中执行,例如复制文件:

# Set the working directory.
WORKDIR /usr/src/app

这确保将package.json文件复制到工作目录中:

# Copy the file from your host to your current location.
COPY package.json .

这里定义了运行容器时将执行npm start:

# Run the specified command within the container.
CMD [ "npm","start" ]

为了进一步研究,我将执行以下命令来启动容器:

docker run -it -d <container-id> /bin/sh

然后转到工作目录并检查是否可以手动启动该应用程序:

# Go to workdir
cd /usr/src/app
# Here check if the package.json is part of the directory.
ls
# Manually run npm script
npm start
,

它可以将这些行添加到package.json

  "scripts": {
  "start": "node server.js"
}

并重新制作新图像等...