我想在Elastic beanstalk上部署一个Tomcat容器作为多容器环境的一部分。
在本地使用
docker run -it --rm -p 8888:8080 tomcat:9.0
打开时 http://localhost:8888/
在浏览器中,HTTP状态为404,脚注为 Apache Tomcat/9.0.34
出现,这是意料之中的,因为我使用的是官方镜像,没有附带任何服务(据我所知)。
现在我想把这个容器作为弹性豆茎集群的访问点。
我选择了 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 -
我需要配置什么才能访问我的容器?
¹为了保持简单,我特意只提供一个容器,但其他环境不是解决方案,必须是多容器环境!
进展
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
),但在elastic beanstalk上却没有,所以我认为这个问题不是tomcat特有的,而是由于设置造成的。设置 "hostPort": 80
为我解决了这个问题。