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

问题描述 投票:0回答:3
# 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.comDockerizing 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".
所以我不确定这里发生了什么。

node.js bash docker npm
3个回答
37
投票

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

CMD ['npm', 'start']

应该是

CMD ["npm", "start"]

当不使用双引号时,docker会删除单引号并将命令处理为

[npm, start]

这就是为什么您会看到错误

[npm,
:未找到


6
投票

我有同样的症状,但问题略有不同。写在这里是为了防止谷歌将其他处于我的情况的人引导到此链接对我来说,问题是忘记了

CMD
中的逗号。所以解决方案是从
CMD ["npm" "start"]
CMD ["npm", "start"]


0
投票

我将 CMD ["npm", "start"] 更改为 CMD npm start。现在可以用了

© www.soinside.com 2019 - 2024. All rights reserved.