node.js - npm 错误!缺少脚本:服务
问题描述
启动 docker 容器时出错。我正在使用 nodemon 来监听文件更改。
DockerFile
FROM node:alpine
WORKDIR '/app'
COPY package.json .
RUN npm install
COPY . .
CMD ["npm","run","serve"]
包.json
{
"dependencies": {
"express": "*",
"nodemon": "*"
},
"scripts": {
"serve": "nodemon index.js",
"start": "node index.js"
}
}
构建命令
docker build -f Dockerfile.dev -t test/nodeapp1 .
cmdLine docker cmd ->
docker run -p 3000:8080 -v /app/node_modules -v pwd:/app test/nodeapp1.
我是 docker 新手,无法找出原因。
解决方案
在您的 dockerfile 中进行此更改
FROM node:alpine
ENV NPM_CONFIG_PREFIX=/home/node/.npm-global
ENV HOME=/home/node/app
ENV PATH="/home/node/.npm-global/bin:${PATH}"
USER node
RUN npm install -g nodemon
RUN mkdir -p ${HOME}
WORKDIR ${HOME}
ADD package.json ${HOME}
RUN cd ${HOME} && npm install
CMD [ "npm" ,"run", "serve" ]
构建 docker 容器
docker build -f Dockerfile -t prac/nodeApp .
运行 docker 容器
docker run -p 3000:8080 -v /app/node_modules -v pwd:/app prac/nodeApp
推荐阅读
- getorgchart - 从 html 表初始化
- python - (keyError:'CELERY_BROKER_URL')
- gcc - How to see what cmake exactly calls gcc/g++ command line?
- javascript - JQuery 添加/删除类无法正常工作
- java - 如何阻止 spring-boot Embedded-undertow 添加斜杠
- arrays - Ruby - 按第一行对多维数组进行排序
- angularjs - 如何解决问题 - 在控制器上未找到与从 AngularJS 向 ASP.NET WebAPI 发送 JSON 对象时的名称匹配的操作
- apache - apache 反向代理到 mTLs 服务
- database - JPG 图像扩展名未插入到 wp 的自定义表中
- java - Microsoft SQL Server:“登录失败。登录来自不受信任的域,不能用于 Windows 身份验证。”