如何链接在AWS ECS任务中运行的2个容器

时间:2019-06-11 02:21:37

标签: docker amazon-ecs aws-fargate

我是ECS的新手,我正在尝试使用Fargate在ECS任务中部署几个容器。

我有1个正在运行的容器使用Angular2,并且在nginx上运行,另一个容器是后端,并且在Springboot上运行,并使用端口42048。

我将awsvpc网络与Fargate一起使用,我必须这样做。

Angular应用程序使用localhost:42048 / some_url与后端通信,并且在我的本地docker中可以正常工作,但是在AWS中,前端找不到后端。目前,我的端口映射为80的前端和42048的后端,而在本地部署时前端能够以localhost:42048的方式找到后端

任何帮助将不胜感激。谢谢

2 个答案:

答案 0 :(得分:1)

在AWSVPC中不允许链接。

当设置为桥接时,您只能在网络模式下进行链接。

links

Type: string array

Required: no
  

link参数允许容器相互通信   无需端口映射。 仅在网络中受支持   任务定义的模式设置为桥接。名称:internalName   结构类似于Docker链接中的name:alias。最多255   字母(大写和小写),数字,连字符和下划线   被允许。有关链接Docker容器的更多信息,请转到   至   https://docs.docker.com/engine/userguide/networking/default_network/dockerlinks/。   此参数映射到以下网址的“创建容器”部分中的链接:   Docker Remote API和docker run的--link选项。

注意

使用awsvpc网络模式的Windows容器或任务不支持此参数。

重要

并置在单个容器实例上的容器可能能够相互通信,而无需链接或主机端口映射。使用安全组和VPC设置在容器实例上实现网络隔离。

task_definition_parameters

在网络模式下,您必须在相同的任务定义中定义两个容器,然后在链接中提到该容器的名称。

enter image description here 然后在前端容器中提到后端容器的名称。

enter image description here

答案 1 :(得分:0)

使用Fargate,如果您想使用 <dx-button id="gridRealistSelected" icon="fas fa-clipboard-check" [height]="34" [width]="40"> </dx-button> <dx-button id="gridSharePlan" icon="fa fa-share-alt" [height]="34" [width]="40"> </dx-button> <dx-data-grid id="gridContainer" keyExpr="id" [dataSource]="shoppingPlan"> <dxo-export fileName="Rencana Belanja" [enabled]="true" [allowExportSelectedData]="false"> </dxo-export> <dxi-column dataField="ket" caption="Keterangan"> </dxi-column> <dxi-column dataField="harga" caption="Harga"> </dxi-column> </dx-data-grid> 访问后端,则可以尝试在相同的Task定义中配置Frontend和Backend。在部署任务时,在同一任务定义中定义的所有容器都将在同一基础主机上运行,​​我们可以使用localhost访问它。 请记住,Fargate存储是临时性的,后端不应该在容器中维护应用程序状态。

localhost:42048

但是,恐怕这种方法适合于生产级。