运行React+;Node.js应用程序作为单个容器(Dockerfile)

运行React+;Node.js应用程序作为单个容器(Dockerfile),node.js,reactjs,docker,Node.js,Reactjs,Docker,我想知道一些(可能)奇怪的解决方案来部署我的应用程序,通常我有两个Dockerfiles,其中一个专用于基于react的前端,采用多阶段构建,将nginx用作静态部署,第二个用于我的节点应用程序的基于pm2的运行时 我真的想避免通过节点提供静态文件,因为这样做无效,我想知道如何将我的应用程序部署为单个Docker映像,因为在这种情况下,我想分发它,这可能吗 我的解决方案是为react和node创建多阶段构建,我将在后台运行node应用程序,并启动nginx进程,该进程将API代理到{url}/A

我想知道一些(可能)奇怪的解决方案来部署我的应用程序,通常我有两个
Dockerfile
s,其中一个专用于基于
react
的前端,采用多阶段构建,将
nginx
用作静态部署,第二个用于我的
节点
应用程序的基于
pm2
的运行时

我真的想避免通过
节点
提供静态文件,因为这样做无效,我想知道如何将我的应用程序部署为单个Docker映像,因为在这种情况下,我想分发它,这可能吗


我的解决方案是为
react
node
创建多阶段构建,我将在后台运行
node
应用程序,并启动
nginx
进程,该进程将API代理到
{url}/API/*
,这在我看来是个不错的解决方案,但是我想听听有人有类似的想法来做这样的事情。

我关于构建多进程
Dockerfile
的研究很好。。。非常简单,您不应该这样做-因为容器缩进时考虑的是
单个进程
。在我的例子中,我已经通过使用
next.js
实现
SSR
和之前的
second.js
解决了主题中发布的问题,使用了用于构建单片容器的工具,如
meteor.js


当然,它可以以一种有点破绽的方式完成,在
mult-stage
build中绑定
react.js
code,然后将其移动到另一个进程,以
express
作为静态构建提供服务,我不会向所有人推荐,因为这是不可扩展的,我们可以通过使用
nginx
react.js
构建服务来归档更好的性能。

如果它适合您的需要,您可以。我会将react应用程序编译为静态文件,并提供一些服务;我更喜欢让节点后端为静态文件服务,而不是尝试将多个进程塞进一个容器中。多阶段构建并不能帮助您从根本上绕过Docker,每个容器只运行一个进程。我把架构搞砸了,这个问题似乎是无效的。我想归档的是MVC架构,其中API和客户端在一个应用程序中解析,我发现了一个很好的
节点
框架,它允许我们做这样的事情,叫做
meteor
。在
Dockerfile
中,我认为应该没有两个进程在运行,所以我只是研究了不应该这样做,因为当我有
SPA
API
这应该是两个容器时,如果我将
react
开发为
MVP
应用程序并结合ex.
express
可以在一个容器中构建应用程序,但我不喜欢这种方法,因为使用
express
react
作为视图控制器是混乱的,而且性能确实低于
SPA
+
API
体系结构。无论如何,这就是你的回答,我会尝试写一个问题的答案,并将其标记为已解决,因为它不再相关。也许将来会有人试着问这样的问题,这会很有帮助。