node.js - 多个应用程序的 Docker 设计

标签 node.js reactjs docker docker-compose application-design

当您拥有多个应用程序时,什么是好的设计?

所以基本上我已经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 服务,即:

  1. 处理域映射和 URL 路由
  2. 提供 SSL
  3. 可以对生产实例进行负载平衡

您也可以选择将 nginx gateway 放入 docker 中,但这不是必需的。

关于node.js - 多个应用程序的 Docker 设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54996835/

相关文章:

javascript - 无法进行 grunt 预处理以替换值

reactjs - 创建 React 应用程序不工作

mysql - 如何加快mysql docker容器的测试速度?

docker login <dtr-server> 给出错误 404 未找到

c# - 在Dockerfile中公开具有不同名称的环境变量

angularjs - 在 Controller 中找不到 fs

javascript - socket io js延迟断开连接发射

node.js - Mongoose:FindOneAndUpdate(),带有来自字段引用的查询

javascript - React.js 子组件不更新从 props 派生的样式,为什么? (样式组件)

javascript - ListView.DataSource 为 React Native 循环数据