Node.js 如何构建仅用于生产的docker图像
我不太喜欢前端开发。我正在为angular 9应用程序构建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
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
会有一个开关呢?我在这里遗漏了一些东西,我在寻找答案。