Dockerized ReactJS & Express on Elastic Beanstalk



我正在与一家初创公司合作开发一个应用程序。我已经学习了2年的CS,所以我对很多事情都很陌生。对于我们的应用程序,我们有一个ReactJS前端,Express后端和MySQL数据库。目前它部署在一个NodeJS环境中的AWS Elastic Beanstalk上。我将它配置为在部署后运行react-scripts build。它通过Express服务器提供静态的react生成的文件(我知道这不是一个好主意)。这已经工作了一段时间,但现在实例在尝试构建时内存不足。

我一直在寻找Docker作为一个更好的解决方案(我从来没有使用过Docker在这周之前),现在我有一个本地开发设置与3个容器:一个MySQL容器,一个Node容器运行后端,和一个Alpine容器只是运行react-scripts start。前端使用代理连接到后端。这一切都在本地工作良好(除了我的后端容器不能连接到互联网,所以外部API被破坏),但我不知道如何将其正确部署到AWS。

弹性Beanstalk是否有一种方法让我构建和部署一个单一的Docker容器与预构建的React前端,配置Nginx服务这些静态文件,然后通过所有的/api请求到Express服务器?我使用RDS作为数据库,所以我不觉得我需要为MySQL部署另一个容器。

我不指望你们能解决我的问题,但如果你们能给我指出正确的方向,我会很感激的。也许我完全用错了方法。

React App:

我建议您将react应用程序部署在AWS Amplify上。您可以很容易地找到如何在Internet上部署的资源。

MySQL

您可以将MySQL数据库托管在EC2实例上,也可以使用任何其他托管服务。

表达应用

现在您可以使用docker平台在EBS上托管express应用程序。你也可以在网上找到这方面的资源。

===========================================================================

现在将您的express应用端点添加到AWS Amplify的环境中,以便与react应用一起使用。将MySQL URL添加到EBS的环境中,以便与Express App一起使用。

注意:AWS在HTTPS上为你的应用提供服务,所以你也必须在EBS上启用SSL。您可以使用AWS证书管理器执行以下操作获取SSL证书并将其附加到EBS。

如果域由Route53处理,这将很容易,但同样,您也可以通过任何域服务提供商实现这一点。

建议您将域迁移到Route 53,因为您将获得更多的控制权和许多其他好处。参考这个答案:https://stackoverflow.com/a/38225802/9323655

希望我的回答能指引你走向正确的方向。

最新更新