gpt4 book ai didi

smtp - 在 Elastic Beanstalk Docker 容器上运行非 www 的东西

转载 作者:行者123 更新时间:2023-12-01 03:48:30 26 4
gpt4 key购买 nike

我想在 Elastic Beanstalk 中的 Docker 容器上运行 SMTP 服务器,因此在我的 Dockerfile 中,我公开了端口 25(没有其他端口)

EXPOSE 25

我还编辑了 beanstalk 负载均衡器(使用 EC2 Web 管理员)并向其添加了端口 25:
| LB Protocol | LB Port | Instance Protocol | Instance Port | SSL |
| TCP | 25 | TCP | 25 | N/A |
....

并编辑实例的安全组以允许入站 TCP 流量到端口 25(允许所有位置能够直接连接到实例)。

虽然似乎不起作用。如果我在 Virtualbox 中使用相同的 Dockerfile(使用选项 -p 25:25),我可以通过主机连接到端口 25,并且 SMTP 服务器正在监听。如果我使用前面提到的配置在 Elastic Beanstalk 中运行容器,我无法使用负载均衡器或直接连接到 EC2 实例连接到端口 25。

任何想法我在这里做错了什么?

最佳答案

建议您使用 elasticbeanstalk ebextensions 执行此操作,而不是直接从 EC2 Web 管理员编辑负载均衡器配置,因为即使替换了自动扩展组中的 EC2 实例,这些更改也会对您的环境持续存在。

您可以尝试以下方法吗?
在名为 .ebextensions 的文件夹中创建一个文件“01-elb.config”在您的应用程序源中包含以下内容:

option_settings:
- namespace: aws:cloudformation:template:parameter
option_name: InstancePort
value: 25

Resources:
AWSEBLoadBalancer:
Type: AWS::ElasticLoadBalancing::LoadBalancer
Properties:
Listeners:
- InstancePort: 25
LoadBalancerPort: 80
Protocol: TCP
- InstancePort: 25
LoadBalancerPort: 25
Protocol: TCP
AvailabilityZones:
- us-west-2a
us-west-2b
us-west-2c
HealthCheck:
Timeout: 5
Target: TCP:25
Interval: 30
HealthyThreshold: 3
UnhealthyThreshold: 5

此文件采用 YAML 格式,因此缩进很重要。
选项设置 ('aws:cloudformation:template:parameter', 'InstancePort') 将实例端口设置为 25 并修改安全组以确保端口 25 可被负载均衡器访问。

此文件覆盖由 Elastic Beanstalk 创建的默认负载均衡器资源,其中两个监听器的实例端口均设置为 25。希望有所帮助。

阅读有关使用 ebextensions 自定义环境的更多信息 here .
您可以尝试使用 .ebextensions/01-elb.config 中的上述文件创建一个新环境吗? appsource 目录中的文件?如果您遇到任何问题,请告诉我。

关于smtp - 在 Elastic Beanstalk Docker 容器上运行非 www 的东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24957940/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com