【发布时间】:2021-05-23 12:14:55
【问题描述】:
我即将部署一个 React 应用程序。我的反应应用程序有一个 API。在 react 开发服务器上,它在端口 3000 上提供 react,而我的 API 在端口 4000 上。
我看到了两种解决方法。
一种方法是在开发中使用 CORS。如果我们走这条路,我们还需要在生产中使用 CORS。我们将有一个 ENV 文件,它告诉反应应用程序它应该向哪个主机/端口发出请求。我们的 CI 管道将有 2 个 docker 容器,2 个 repos。当我们部署前端或后端更改时,我们将能够独立重启两台服务器。我们将在 mysite.com 上运行 1 个 docker,在 api.mysite.com 上运行 api。
另一种方法是使用 package.json 中的代理并将所有请求转发到我们的后端。即不必向localhost:4000/sign-in 提出请求,我们只需向/sign-in 提出请求。通过这种方法,我认为使用 monorepo 很有意义。我们会有
app
api/
my-api
ui/
my-react-app
我的 api 将主要是 RESTful 路由,但对于所有非 api 路由,这些路由将提供一个 HTML 文件,该文件将为 javascript 提供服务。 CI 管道将构建和最小化并将 JS 推送到 S3 并为其命名,例如 {SHA1}.min.js,我们的 API 的 index.html 文件将具有
<script src=`{SHA1}.min.js`></script>
我似乎无法决定更好的方法。能够独立部署前端和后端会更简单吗?是否不需要一个只提供一个 html 文件的 docker ?我们应该走哪条路?
【问题讨论】: