我使用tomcat:8.5-jre8-alpine镜像在ECS中部署了Java Webapp。此任务的网络模式为awsvpc;我有许多任务在ALB前面的3个EC2实例上运行。
这工作正常,但现在我想在每个tomcat容器的前面添加一个nginx反向代理,类似于以下示例:https://github.com/awslabs/ecs-nginx-reverse-proxy/tree/master/reverse-proxy。
我的缩写容器定义文件是:
{
"containerDefinitions": [
{
"name": "nginx",
"image": "<NGINX reverse proxy image URL>",
"memory": "256",
"cpu": "256",
"essential": true,
"portMappings": [
{
"containerPort": "80",
"protocol": "tcp"
}
],
"links": [
"app"
]
},
{
"name": "app",
"image": "<app image URL>",
"memory": "1024",
"cpu": "1024",
"essential": true
}
],
"volumes": [],
"networkMode": "awsvpc",
"placementConstraints": [],
"family": "application-stack"
}
当我尝试保存新的任务定义时,收到错误消息:“当网络类型为awsvpc时,不支持链接”
我使用awsvpc网络模式,因为它使我可以通过安全组对入站流量进行精细控制。
使用awsvpc网络模式时,是否可以用两个链接的容器创建任务定义?
最佳答案
您根本不需要链接部分,因为awsvpc允许您仅通过使用引用其他容器
在您的nginx配置文件中。
因此,请从json中删除链接,并在nginx配置中使用localhost:{container-port}。就那么简单。