Node.js 如何使用Dockerfile中的不可分发映像为nodejs应用程序提供服务?
我试图将此示例构建为一个不可发布的映像: 使用vanilla image,它将按照以下方式构建和运行:Node.js 如何使用Dockerfile中的不可分发映像为nodejs应用程序提供服务?,node.js,docker,Node.js,Docker,我试图将此示例构建为一个不可发布的映像: 使用vanilla image,它将按照以下方式构建和运行: FROM node:10 COPY . . RUN npm install EXPOSE 5000 CMD ["npm", "start"] 以下内容不起作用,因为npm不存在 FROM node:10 AS builder COPY . /app WORKDIR /app RUN npm install FROM gcr.io/distro
FROM node:10
COPY . .
RUN npm install
EXPOSE 5000
CMD ["npm", "start"]
以下内容不起作用,因为npm不存在
FROM node:10 AS builder
COPY . /app
WORKDIR /app
RUN npm install
FROM gcr.io/distroless/nodejs:10
COPY --from=builder /app /app
WORKDIR /app
EXPOSE 5000
CMD ["npm", "start"]
我如何使用不可分发的图像来为上面的例子中的应用提供服务?谷歌文档对此似乎非常清楚,你可以从中复制/粘贴他们的Dockerfile 但相关的一点是这是“第二阶段”-注意没有NPM命令
FROM gcr.io/distroless/nodejs:10
COPY --from=build-env /app /app
WORKDIR /app
CMD ["hello.js"]
此外,对于这个特定的图像,比如说,入口点被定义为这个图像的“节点”,所以你应该有效地传递你的“npm run start”命令调用的启动脚本。是的,但是我试图构建的应用程序没有“hello.js”,它提供了“webpack——mode production&service-s-l 5000 dist”我需要更改源代码吗?感谢您的帮助不知道您的应用程序的实际代码,很难说您到底需要做什么,除非我不会说每次启动应用程序时,您都在构建—这并不理想。您应该在生成器中有效地执行
webpack
步骤,然后在实际的最终图像上执行服务。提供的服务
应该转化为什么?我不确定您的网页--生产模式
是否会(如果配置正确)生成需要交付的两个文件。如果希望通过节点服务器(如express)提供这些静态文件,则需要一个启动服务器的附加脚本。