Elastic Beanstalk 上的多容器 Docker 环境中的容器连接被拒绝

Posted

技术标签:

【中文标题】Elastic Beanstalk 上的多容器 Docker 环境中的容器连接被拒绝【英文标题】:Connection refused for container in multicontainer Docker environment on Elastic Beanstalk 【发布时间】: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 refusedcurl 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 设置为不同的值

但这并没有改变调用addressaddress:1234的任何东西

    我用烧瓶进一步尝试了同样的事情,图像是poroko/flask-demo-appcontainerPort 是 5000。它再次在本地工作(docker run -it --rm -p 8888:5000 poroko/flask-demo-app),但不适用于弹性豆茎,所以我认为这个问题不是特定于 tomcat 而是由于设置。

【问题讨论】:

查看我的 eb ecs docker 中的内容,我认为您必须使用 aws:elasticbeanstalk:environment:process:default 调整端口。您也可以先通过控制台检查它是否有帮助,然后再将其添加到.ebextensions 文件。 【参考方案1】:

设置"hostPort": 80为我解决了这个问题。

【讨论】:

以上是关于Elastic Beanstalk 上的多容器 Docker 环境中的容器连接被拒绝的主要内容,如果未能解决你的问题,请参考以下文章

Elastic Beanstalk 上的 Tomcat - Tomcat 线程中的多线程

AWS Elastic Beanstalk 上的 Docker 端口映射

Elastic Beanstalk 多容器 Docker 环境变量

Elastic Beanstalk 上的 NodeJS 多容器 Docker

Elastic Beanstalk 上的节点 Docker 容器找不到本地 Gulp

AWS Elastic Beanstalk 上的 Docker - 无法从容器访问环境变量