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

Pet*_*ter 10 bash node.js npm docker

# 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']
Run Code Online (Sandbox Code Playgroud)

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

/bin/sh: [npm,: not found
Run Code Online (Sandbox Code Playgroud)

我尝试以交互模式运行容器,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".所以我不确定这里发生了什么.

Tar*_*ani 16

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

CMD ['npm', 'start']
Run Code Online (Sandbox Code Playgroud)

应该

CMD ["npm", "start"]
Run Code Online (Sandbox Code Playgroud)

当您不使用双引号时,docker将删除单引号并将命令处理为 [npm, start]

这就是为什么你看到错误[npm,:找不到


dow*_*ner 6

我有同样的症状,但问题略有不同。写在这里以防谷歌引导其他人在我的情况下到这个链接对我来说问题是忘记了逗号CMD。所以解决方案是从CMD ["npm" "start"]CMD ["npm", "start"]