Lin*_*h14 10 amazon-ecs docker aws-fargate
我是 ECS 的新手,我正在尝试使用 Fargate 在 ECS 任务中部署几个容器。
我有 1 个使用 Angular2 并在 nginx 上运行的容器,另一个容器是后端,在 Springboot 上运行并使用端口 42048。
我正在将 awsvpc 网络与 Fargate 一起使用,我必须这样做。
Angular 应用程序使用 localhost:42048/some_url 与后端通信,它在我的本地 docker 中运行良好,但在 AWS 中,前端找不到后端。目前,我的端口映射为前端的 80 和后端的 42048,前端在本地部署时能够找到后端为 localhost:42048
任何帮助,将不胜感激。谢谢
Adi*_*iii 10
AWSVPC 中不允许链接。
当设置为桥接时,您只能在网络模式下进行链接。
links
Type: string array
Required: no
Run Code Online (Sandbox Code Playgroud)
link 参数允许容器相互通信而无需端口映射。仅当任务定义的网络模式设置为桥接时才支持。name:internalName 构造类似于 Docker 链接中的 name:alias。最多允许 255 个字母(大写和小写)、数字、连字符和下划线。有关链接 Docker 容器的更多信息,请访问 https://docs.docker.com/engine/userguide/networking/default_network/dockerlinks/。此参数映射到 Docker 远程 API 的创建容器部分中的链接和
--linkdocker run 选项。
笔记
使用 awsvpc 网络模式的 Windows 容器或任务不支持此参数。
重要的
并置在单个容器实例上的容器可能无需链接或主机端口映射即可相互通信。使用安全组和 VPC 设置在容器实例上实现网络隔离。
在网络模式下,你必须在同一个任务定义中定义两个容器,然后在链接中提到容器的名称。
使用 Fargate,如果您想使用 访问后端localhost:42048,那么您可以尝试在同一任务定义中配置前端和后端。在部署任务时,在同一任务定义中定义的所有容器都将在同一底层主机中运行,我们可以使用 localhost 访问它。请记住,Fargate 存储是短暂的,您的后端不应在容器中维护应用程序状态。
...
"containerDefinitions": [
{
"name": "frontend",
"image": "my-repo/angularapp",
"cpu": 256,
"memory": 1024,
"essential": true,
"portMappings": [ {
"containerPort": 8080,
"hostPort": 8080
}
]
},
{
"name": "backend",
"image": "my-repo/springboot",
"cpu": 256,
"memory": 1024,
"essential": true,
"portMappings": [ {
"containerPort": 42048,
"hostPort": 42048
}
]
}
]
...
Run Code Online (Sandbox Code Playgroud)
但恐怕这种方法不适合生产级。
| 归档时间: |
|
| 查看次数: |
7368 次 |
| 最近记录: |