python - 在 ECS fargate 中运行前端和后端服务
问题描述
我有一个小型reactjs
前端应用程序和一个python
后端应用程序。
我想在ECS
Fargate 中运行这两个服务。所以我创建了一个task definition
并将两个容器包含在同一个任务定义中。
并且应用程序正在使用如下方式与后端reactjs
交谈(命中) :python
axios
axio.get("http://127.0.0.1:8083/monitors").then(res => {
this.setState({
status: res.data
});
});
此设置在本地环境中运行良好。但是由于现在我将其移至 Fargate,当我使用域访问前端服务时,出现以下错误:
无法加载资源:net::ERR_CONNECTION_REFUSED 127.0.0.1:8083/monitors:1
那么,我该怎么做,如何访问后端容器?
解决方案
如果它们都是后端应用程序,您的设置将正常工作。但是,ReactJS 应用程序实际上是在用户的 Web 浏览器中运行的。Axios 需要在运行 Web 浏览器的本地计算机和在 Fargate 上运行的后端服务之间建立网络连接。目前,因为你让它指向它,它正试图在你的本地计算机上的不存在127.0.0.1
的端口上寻找运行的服务。8083
您需要配置您的 Axios 应用程序以通过其公共 IP 地址或域访问后端服务。在这种情况下通常使用负载均衡器,然后您将 Axios 指向负载均衡器的域名。
推荐阅读
- android - 尝试构建发布 apk 但收到 java.lang.OutOfMemoryError: GC 开销限制超出异常
- electron - 使用代码签名证书签署电子包时出错
- jenkins-groovy - 动态添加选择参数的 Groovy 代码
- reactjs - React 中类组件中的方法太多 - 问题重构
- python - 如何在不创建新生成器的情况下在 Python 中获取生成器的新输入
- javascript - Ionic 4 ion-datetime 浮动标签即使没有值也总是浮动
- python-3.x - Scrapy spider 只提取第一个表格元素
- android-studio - IDE未在颤动中显示小部件结束注释
- laravel - 如何在laravel morph关系中通过id获取不可复制类型的记录
- php - 404 上的 http 请求