运行docker-compose
以启动我的应用时,尽管指定了启动脚本,但我得到npm ERR! missing script: start
。
package.json是
{
"name": "myapp",
"version": "0.0.0",
"private": true,
"scripts": {
"start": "node ./bin/www"
},
"dependencies": {
"body-parser": "~1.17.1",
"cookie-parser": "~1.4.3",
"debug": "~2.6.3",
"ejs": "~2.5.6",
"express": "~4.15.2",
"mongoose": "^4.11.1",
"morgan": "~1.8.1",
"serve-favicon": "~2.4.2"
}
}
和docker-compose.yml是
version: "2"
services:
web:
build: .
volumes:
- ./:/app
ports:
- "3500:3500"
有两件事对我没有意义:
不确定是否需要,但Dockerfile是
FROM node:argon
RUN mkdir /app
WORKDIR /app
COPY package.json /app
RUN npm install
COPY . /app
EXPOSE 3500
ENV PORT 3500
CMD ["npm", "start"]
编辑:我正在使用docker run -p 3500:3500 app
和docker-compose up
我是新手,所以可能会遗漏一些东西,但现在有点卡住了。
答案 0 :(得分:1)
您可以尝试删除卷部分
- ./:/app
看起来/ app是在容器中创建的,但随后您将主机目录挂载到/ app,从而将原始/ app隐藏在容器中。
答案 1 :(得分:0)
您收到的错误是您看不到./bin/www目录。
请遵循以下步骤。
希望我能对您有所帮助。
答案 2 :(得分:0)
添加
"docker":xxxxx
"docker-build":xxxxx
这样的地雷
"docker": "node --experimental-modules ./signal-server",
"docker-build": "docker build -t node-web-development/signalauth ."
您的程序包json文件
答案 3 :(得分:0)
检查与定义“开始”脚本的package.json
文件所在的目录中是否存在docker-compose.yml
文件。如果不是,那可能是导致错误的原因,因为您正在将当前目录装载到容器的应用程序目录中。更好的设置是将节点应用程序放在其自己的子目录中,并在其中放置docker-compose文件。然后,可以通过将其提供给docker-compose.yml
文件的构建条目来指向节点应用程序目录:
version: "2"
services:
web:
build: ./yourNodeAppDir
volumes:
- ./:/app # is this necessary?
ports:
- "3500:3500"