thi*_*ski 35 docker amazon-elastic-beanstalk
通过阅读AWS文档,看来当使用Docker作为Elastic Beanstalk(EB)上的平台(而不是Tomcat等)时,只能暴露一个端口.我试图理解为什么亚马逊创建了这个限制 - 似乎你现在甚至无法同时提供HTTP和HTTPS.
我想使用Docker作为容器,因为它允许我在同一个容器中运行几个互连的服务器进程,其中一些需要多个端口(例如RTSP).这种应用程序是否有任何变通方法,例如RTSP和HTTP服务器都可以在EB上的同一个Docker容器中运行?
Pra*_*abu 20
即使没有文档解释它,单容器Docker Environment也支持映射多个端口
{
"AWSEBDockerrunVersion": "1",
"Ports": [
{
"ContainerPort": "8080"
},
{
"HostPort": "9000",
"ContainerPort": "8090"
}
]
}
Run Code Online (Sandbox Code Playgroud)
通过上述配置,docker的端口8080将映射到主机端口80,docker的端口8090将映射到主机端口9000.
更清楚的是,列表中的第一个端口将被映射到主机端口80,并且在没有主机端口的情况下,剩余的将被映射到指定的hostPort(或)与容器端口相同.
您可以为 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"
} ]
}
}
}
Run Code Online (Sandbox Code Playgroud)
参考:
| 归档时间: |
|
| 查看次数: |
8984 次 |
| 最近记录: |