一尘不染

在Elastic Beanstalk中从Docker公开多个端口

docker

通过阅读AWS文档,似乎将Docker用作Elastic
Beanstalk(EB)(与Tomcat等相对)的平台时,只能公开一个端口。我试图了解为什么亚马逊创建了此限制-
看来您现在甚至无法同时提供HTTP和HTTPS。

我想使用Docker作为容器,因为它允许我在同一容器中运行多个互连的服务器进程,其中一些需要多个端口(例如RTSP)。对于这种应用程序,是否有任何变通办法,例如RTSP和HTTP服务器都可以在EB上的同一Docker容器中运行?


阅读 258

收藏
2020-06-17

共1个答案

一尘不染

您可以为Elastic Beanstalk的LoadBalancer / ReversProxy编写启动配置文件,以将其他端口转发到其EC2实例。Ben
Delarre的
一个例子:

"Resources" : {
  "AWSEBLoadBalancerSecurityGroup": {
    "Type" : "AWS::EC2::SecurityGroup",
    "Properties" : {
      "GroupDescription" : "Enable 80 inbound and 8080 outbound",
      "VpcId": "vpc-un1que1d",
      "SecurityGroupIngress" : [ {
        "IpProtocol" : "tcp",
        "FromPort" : "80",
        "ToPort" : "80",
        "CidrIp" : "0.0.0.0/0"
      }],
      "SecurityGroupEgress": [ {
        "IpProtocol" : "tcp",
        "FromPort" : "8080",
        "ToPort" : "8080",
        "CidrIp" : "0.0.0.0/0"
      } ]
    }
  },
  "AWSEBLoadBalancer" : {
    "Type" : "AWS::ElasticLoadBalancing::LoadBalancer",
    "Properties" : {
      "Subnets": ["subnet-un1que1d2"],
      "Listeners" : [ {
        "LoadBalancerPort" : "80",
        "InstancePort" : "8080",
        "Protocol" : "HTTP"
      } ]
    }
  }
}

参考:

2020-06-17