通过阅读AWS文档,似乎将Docker用作Elastic Beanstalk(EB)(与Tomcat等相对)的平台时,只能公开一个端口。我试图了解为什么亚马逊创建了此限制- 看来您现在甚至无法同时提供HTTP和HTTPS。
我想使用Docker作为容器,因为它允许我在同一容器中运行多个互连的服务器进程,其中一些需要多个端口(例如RTSP)。对于这种应用程序,是否有任何变通办法,例如RTSP和HTTP服务器都可以在EB上的同一Docker容器中运行?
您可以为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" } ] } } }
参考: