当您拥有多个应用程序时,什么是好的设计?
所以基本上我已经docker化了一个react应用程序和一个nodejs应用程序。所以我的想法是拥有 3 个 docker 容器 - 一个用于 React 应用程序,一个用于 Nodejs 后端,而 nginx 作为路由器。任何电话 /
将路由到 react 应用程序和任何带有 /api
的内容将路由到nodejs后端。同样对于 React 应用程序,在开发过程中我们将使用 npm run start
运行应用程序。在部署时,我们将有多个构建步骤,我们将在其中运行 npm run build
并将构建文件夹复制到 nginx 镜像。我正在使用 docker compose 在我的本地 while dev 以及 QA/stage 服务器上运行它们。拥有 nginx 路由器的想法是允许从任何应用程序代理到不同的应用程序。通过这种方式,我想鼓励团队遵循精益架构。
为了帮助理解设计,请参阅以下内容:
开发环境 -
-> "/" -> react app
|
nginx |
|
-> "/api" -> nodejs
产品环境 -
-> "/" -> nginx (serving build folder)
|
nginx |
|
-> "/api" -> nodejs
这是一个好的设计吗?请分享您在自己的多应用程序 Docker 设置中遵循哪种设计。
干杯!!!
最佳答案
我建议针对不同的环境按子域进行分区。因此,开发人员/测试人员在访问另一个环境时只需添加前缀“dev”即可。
Docker
|
domain.com/* -> | | -> |_Production UI
domain.com/api/* -> | | -> |_Production Backend
| nginx |
dev.domain.com/* -> | | -> |_Development UI
dev.domain.com/api/* -> | | -> |_Development Backend
这意味着拥有一个 nginx 服务,即:
- 处理域映射和 URL 路由
- 提供 SSL
- 可以对生产实例进行负载平衡
您也可以选择将 nginx gateway 放入 docker 中,但这不是必需的。
关于node.js - 多个应用程序的 Docker 设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54996835/