Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何构建仅用于生产的docker图像_Node.js_Angular_Docker_Npm - Fatal编程技术网

Node.js 如何构建仅用于生产的docker图像

Node.js 如何构建仅用于生产的docker图像,node.js,angular,docker,npm,Node.js,Angular,Docker,Npm,我不太喜欢前端开发。我正在为angular 9应用程序构建docker映像。这是我试过的东西 ARG NODE_VERSION=12.16.1 # stage - # 1 FROM node:${NODE_VERSION}-buster-slim as builder WORKDIR /app COPY . . RUN npm install --only=production && npm run build --prod # stage - #final FROM

我不太喜欢前端开发。我正在为angular 9应用程序构建docker映像。这是我试过的东西

ARG NODE_VERSION=12.16.1

# stage - # 1
FROM node:${NODE_VERSION}-buster-slim as builder

WORKDIR /app

COPY . .

RUN npm install --only=production && npm run build --prod

# stage - #final
FROM nginx:stable

COPY --from=builder /webapp/dist/webapp /usr/share/nginx/html
COPY demo-nginx.conf /etc/nginx/nginx.conf

EXPOSE 80

CMD ["nginx", "-g", "daemon off;"]
我得到以下错误

#10 5.883 > webapp@0.0.0 build /webapp
#10 5.883 > ng build
#10 5.883 
#10 5.885 sh: 1: ng: not found
#10 5.887 npm ERR! code ELIFECYCLE
#10 5.887 npm ERR! syscall spawn
#10 5.887 npm ERR! file sh
#10 5.887 npm ERR! errno ENOENT
#10 5.888 npm ERR! webapp@0.0.0 build: `ng build`
#10 5.888 npm ERR! spawn ENOENT
#10 5.888 npm ERR! 
#10 5.888 npm ERR! Failed at the webapp@0.0.0 build script.
#10 5.888 npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
#10 5.892 
当我只执行生产
npm安装
时,“ng”命令没有安装到映像的第一阶段。如果我不使用--only=production,那么所有的开发依赖项都会随它一起安装。
我如何才能只获取生产依赖项,而为生产构建它?
npm是否运行build--prod
命令创建仅包含生产文件的/dist文件夹? 如何正确操作?

这是一个工作文件:

ARG NODE_VERSION=12.16.1

# stage - # 1
FROM node:${NODE_VERSION}-buster-slim as builder

WORKDIR /app

COPY . .

RUN npm install 
RUN npm run build --prod

# stage - #final
FROM nginx:stable

COPY --from=builder /app/dist/{add_angularapp_name}  /usr/share/nginx/html

CMD ["nginx", "-g", "daemon off;"]

我知道我能做到,但我一直在寻找一个具体的答案。我可以很容易地完成我的工作,今天就到此为止。我知道发生错误是因为生产切换。如果
ng build--prod
会这样做,那么为什么
npm install
会有一个开关呢?我在这里遗漏了一些东西,我在寻找答案。