Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.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 如何使用Dockerfile中的不可分发映像为nodejs应用程序提供服务?_Node.js_Docker - Fatal编程技术网

Node.js 如何使用Dockerfile中的不可分发映像为nodejs应用程序提供服务?

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

我试图将此示例构建为一个不可发布的映像:

使用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/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)提供这些静态文件,则需要一个启动服务器的附加脚本。