【发布时间】:2020-08-28 23:59:05
【问题描述】:
我想在 Elastic beanstalk 上部署一个 tomcat 容器作为多容器环境的一部分。
在本地一切正常
docker run -it --rm -p 8888:8080 tomcat:9.0
在浏览器中打开http://localhost:8888/ 时,会出现带有页脚Apache Tomcat/9.0.34 的HTTP 状态404,这是预期的,因为我使用的是不附带任何服务的官方图像(据我所知)。
现在我想使用这个容器作为 Elastic beanstalk 集群中的接入点。
我选择 Create Application 并提供我的 Dockerrun.aws.json¹:
{
"AWSEBDockerrunVersion": 2,
"volumes": [],
"containerDefinitions": [
{
"name": "vanilla-tomcat",
"image": "tomcat:9.0",
"essential": "true",
"memory": 128,
"portMappings": [
{
"hostPort": 8888,
"containerPort": 8080
}
],
"mountPoints": []
}
]
}
健康是绿色的,没有错误,但是当我调用地址时,例如
与curl http://vanillatomcat-env.eba-abc.eu-central-1.elasticbeanstalk.com/ 我得到curl: (7) Failed to connect to vanillatomcat-env.eba-xy.eu-central-1.elasticbeanstalk.com port 80: Connection refused
与curl http://vanillatomcat-env.eba-abc.eu-central-1.elasticbeanstalk.com:8888 我得到Connection timed out。
安全组有一个入站规则:
Type Protocol Port range Source Description - optional
HTTP TCP 80 0.0.0.0/0 -
我需要配置什么才能访问我的容器?
¹我故意只提供一个容器以保持简单,但其他环境不是解决方案,它必须是多容器环境!
进展
- 根据 Marcin 的建议(我对 a 的理解),我在 Configuration -> Software -> Environment properties 下将
aws:elasticbeanstalk:environment:process:default:Port设置为不同的值:
但这并没有改变调用address或address:1234的任何东西
- 我用烧瓶进一步尝试了同样的事情,图像是
poroko/flask-demo-app,containerPort是 5000。它再次在本地工作(docker run -it --rm -p 8888:5000 poroko/flask-demo-app),但不适用于弹性豆茎,所以我认为这个问题不是特定于 tomcat 而是由于设置。
【问题讨论】:
-
查看我的 eb ecs docker 中的内容,我认为您必须使用 aws:elasticbeanstalk:environment:process:default 调整端口。您也可以先通过控制台检查它是否有帮助,然后再将其添加到
.ebextensions文件。
标签: amazon-web-services docker tomcat amazon-elastic-beanstalk