问题描述
这令人沮丧,但我在这里。
我正拼命尝试阅读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"
}
并重新制作新图像等...