从节点映像运行docker容器时找不到Npm

时间:2017-08-26 14:03:26

标签: node.js bash docker npm

# Dockerfile
FROM node:7-alpine
RUN mkdir -p /src/app
WORKDIR /src/app
COPY package.json /src/app/package.json
RUN npm install
COPY . /src/app
EXPOSE 3000
CMD ['npm', 'start']

我正在尝试使用上面的Dockerfile为katacoda.com个应用程序完成Dockerizing nodejs练习。构建完成但运行映像立即退出,并在docker日志中看到:

/bin/sh: [npm,: not found

我尝试使用docker -it nodeapp /bin/bash以交互模式运行容器,这会引发错误docker: Error response from daemon: oci runtime error: container_linux.go:262: starting container process caused "exec: \"/bin/bash\": stat /bin/bash: no such file or directory".所以我不确定这里发生了什么。

2 个答案:

答案 0 :(得分:10)

它不起作用的原因是单引号

CMD ['npm', 'start']

应该是

CMD ["npm", "start"]

如果您不使用双引号,则docker会删除单引号并将命令处理为[npm, start]

这就是您看到错误[npm,:未找到

的原因

答案 1 :(得分:1)

我有相同的症状,但问题略有不同。如果在这里写,以防google将我所处的其他人引向该链接,对我而言,问题是忘记了CMD中的逗号。因此解决方案是从CMD ["npm" "start"]CMD ["npm", "start"]