Docker/Angular/Nginx:“;执行官:\";npm\";:在$PATH";中找不到可执行文件:

Docker/Angular/Nginx:“;执行官:\";npm\";:在$PATH";中找不到可执行文件:,angular,docker,nginx,Angular,Docker,Nginx,我有一个angular应用程序,我与nginx对接在一起。我的dockerfile: FROM node:8.11.3 as node WORKDIR /app COPY package.json /app/ RUN npm install COPY ./ /app/ ARG env=prod RUN npm run build -- --prod --environment $env FROM nginx:1.13 COPY --from=node /app/dist/ /usr

我有一个angular应用程序,我与nginx对接在一起。我的dockerfile:

FROM node:8.11.3 as node

WORKDIR /app

COPY package.json /app/

RUN npm install
COPY ./ /app/

ARG env=prod

RUN npm run build -- --prod --environment $env

FROM nginx:1.13

COPY --from=node /app/dist/ /usr/share/nginx/html

RUN rm /etc/nginx/conf.d/default.conf
COPY ./nginx-custom.conf /etc/nginx/conf.d/default.conf

EXPOSE 4200
CMD ["npm", "start"]
我构建docker映像,但当我启动docker运行时,会收到以下错误消息:

docker: Error response from daemon: OCI runtime create failed: container_linux.go:348: starting container process caused "exec: \"npm\": executable file not found in $PATH": unknown.
如果我从Dockerfile(CMD[“npm”,“start”]中删除最后一个命令,我可以运行docker映像-它可以工作。但我想我需要最后一个命令,以便在AWS中部署和运行我的应用程序。另外,“CMD npm start”也不起作用

我看过一些关于类似问题的帖子,但没有一个解决方案对我有效

更新:

我删除了最后一行——CMD npm start。ECS现在正试图启动我的任务——但它停止了,退出代码为1,没有进一步的注释。你知道吗

谢谢,
Michael

nginxdocker图像不包含
npm
。您需要使用
node:latest
node:alpine
,其中包含
npm

当运行Angular应用程序时,您不应该使用
npm start
。该命令用于创建开发时使用的开发服务器。查看.Al因此,如果您想在AWS中运行它,那么将其作为静态内容而不是Docker图像使用会便宜得多。启动它的正确方法是什么?如果我使用CMD[“ng”,“service”,“-H”,“0.0.0”]我收到了同样的错误消息。嗨,你的意思是我根本不应该在AWS中使用docker?据了解,你从
指令中选择的第二个
会覆盖第一个指令,因此在运行
CMD
的那一刻,没有可用的
npm
可执行文件。请检查这一点:一点也不,AWS中的docker有时很棒,但使用dockerserve Angular真是太棒了。一旦构建,Angular只是一系列静态文件,使用cloudfront或S3静态hostingDocker文件包含多个FROM子句(一个是node,另一个是nginx)要便宜得多-该部分可能处理不正确。他为什么要更改为没有nginx的图像?这没有意义,这个答案没有意义。他问如何让npm和纱线在nginx容器上工作。如果没有,他可能需要同时安装npm和纱线