AWS Beanstalk 和 Docker 端口 = 这是什么愚蠢的行为?
AWS Beanstalk and Docker ports = what manner of tomfoolery is this?
所以我有一个在端口 9000 上运行的 docker 应用程序,我希望仅通过 https 而不是 http 访问它,但是我似乎对如何访问它一无所知亚马逊处理港口。简而言之,我只想公开端口 443 而不是 80(在负载均衡器层和实例层),但一直无法做到这一点。
所以我的 Dockerfile 有:
EXPOSE 9000
我的 Dockerrun.aws.json 有:
{
"AWSEBDockerrunVersion": "1",
"Ports": [{
"ContainerPort": "9000"
}]
}
而且我似乎无法通过端口 9000 访问内容,只能通过 80。
当我通过 ssh 进入 docker 容器是 运行 的实例并使用 netstat 查找端口时,我得到端口 80 和 22 以及其他一些 udp 端口,但没有端口 9000。如何到底亚马逊管理这个吗?更重要的是,用户如何获得预期的行为?
尝试使用 ssl 和 https 也会产生同样的结果。证书已设置并映射到端口 443,我什至在 .ebextensions 配置文件中创建了一个案例以在实例上打开端口 443,但仍然没有 ssl
sslSecurityGroupIngress:
Type: AWS::EC2::SecurityGroupIngress
Properties:
GroupName: {Ref : AWSEBSecurityGroup}
IpProtocol: tcp
ToPort: 443
FromPort: 443
CidrIp: 0.0.0.0/0
让 SSL 工作的唯一方法是让负载均衡器使用端口 443 (ssl) 转发到实例端口 80(非 https),但这是荒谬的。我究竟该如何打开实例上的 ssl 端口并设置 docker 以使用给定的端口?有人成功过吗?
对于这方面的任何帮助,我将不胜感激 - 我已经仔细阅读了文档并了解了这一点,但这让我很困惑。简而言之,我只想公开端口 443 而不是 80(在负载均衡器层和实例层),但一直无法做到这一点。
祝你有美好的一天
干杯
这是已知问题,来自 http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_docker_image.html:
You can specify multiple container ports, but Elastic Beanstalk uses only the first one to connect your container to the host's reverse proxy and route requests from the public Internet.
因此,如果您需要多个端口,AWS Elastic Beanstalk 可能不是最佳选择。至少 Docker 个选项。
关于 SSL - 我们通过使用专用的 nginx 实例和 proxy_pass 连接到 Elastic Beanstalk 环境 URL 来解决它。
所以我有一个在端口 9000 上运行的 docker 应用程序,我希望仅通过 https 而不是 http 访问它,但是我似乎对如何访问它一无所知亚马逊处理港口。简而言之,我只想公开端口 443 而不是 80(在负载均衡器层和实例层),但一直无法做到这一点。
所以我的 Dockerfile 有:
EXPOSE 9000
我的 Dockerrun.aws.json 有:
{
"AWSEBDockerrunVersion": "1",
"Ports": [{
"ContainerPort": "9000"
}]
}
而且我似乎无法通过端口 9000 访问内容,只能通过 80。
当我通过 ssh 进入 docker 容器是 运行 的实例并使用 netstat 查找端口时,我得到端口 80 和 22 以及其他一些 udp 端口,但没有端口 9000。如何到底亚马逊管理这个吗?更重要的是,用户如何获得预期的行为?
尝试使用 ssl 和 https 也会产生同样的结果。证书已设置并映射到端口 443,我什至在 .ebextensions 配置文件中创建了一个案例以在实例上打开端口 443,但仍然没有 ssl
sslSecurityGroupIngress:
Type: AWS::EC2::SecurityGroupIngress
Properties:
GroupName: {Ref : AWSEBSecurityGroup}
IpProtocol: tcp
ToPort: 443
FromPort: 443
CidrIp: 0.0.0.0/0
让 SSL 工作的唯一方法是让负载均衡器使用端口 443 (ssl) 转发到实例端口 80(非 https),但这是荒谬的。我究竟该如何打开实例上的 ssl 端口并设置 docker 以使用给定的端口?有人成功过吗?
对于这方面的任何帮助,我将不胜感激 - 我已经仔细阅读了文档并了解了这一点,但这让我很困惑。简而言之,我只想公开端口 443 而不是 80(在负载均衡器层和实例层),但一直无法做到这一点。
祝你有美好的一天
干杯
这是已知问题,来自 http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_docker_image.html:
You can specify multiple container ports, but Elastic Beanstalk uses only the first one to connect your container to the host's reverse proxy and route requests from the public Internet.
因此,如果您需要多个端口,AWS Elastic Beanstalk 可能不是最佳选择。至少 Docker 个选项。
关于 SSL - 我们通过使用专用的 nginx 实例和 proxy_pass 连接到 Elastic Beanstalk 环境 URL 来解决它。