AWS Docker 部署不使用 Dockerrun 文件向外界公开端口

Posted

技术标签:

【中文标题】AWS Docker 部署不使用 Dockerrun 文件向外界公开端口【英文标题】:AWS Docker deployment not exposing port to outside world with Dockerrun file 【发布时间】:2019-06-12 23:10:54 【问题描述】:

我正在使用 docker 映像将 spring-boot 应用程序部署到 AWS,我需要能够使用 hawtio 控制台远程连接到应用程序以监控行为。我创建了一个 Dockerfile 和一个 Dockerrun.aws.json 文件,例如,dockerfile 有 EXPOSE 8080,而 Dockerrun 是:


"AWSEBDockerrunVersion": "1",
"Ports": [
  
    "ContainerPort": 8080,
    "HostPort": 5000
  
]

AWS EB 实例打开了 5000 端口(我测试过),但 Hawtio 控制台没有连接到应用程序。有人可以为我指出如何正确公开端口的正确方向吗?

【问题讨论】:

【参考方案1】:

如果您使用的是 EB,那么您如何指定要使用的 docker 映像?

此信息需要在Dockerrun.aws.json 文件中指定,您提供的示例中没有此信息。


    "AWSEBDockerrunVersion": "1",
    "Image": 
        "Name": "path to the image's repository",
        "Update": "true"
    ,
    "Ports": [
        
            "ContainerPort": 8080,
            "HostPort": 5000
        
    ]

【讨论】:

是的,很抱歉错过了帖子中的那一行。无论如何我设法解决了这个问题,AWS EB 在端口 5000 上启动了应用程序,所以我只需要在 dockerrun.aws.json 上将 containerPort 设置为 5000 并在 Dockerfile 中将 EXPOSE 5000 设置为

以上是关于AWS Docker 部署不使用 Dockerrun 文件向外界公开端口的主要内容,如果未能解决你的问题,请参考以下文章

AWS Docker 部署不使用 Dockerrun 文件向外界公开端口

使用docker部署mysql主从复制集群

Docker部署Gitlab

带有 docker 的 AWS Elastic Beanstalk 版本不正确

在没有负载平衡的情况下将 docker 部署到 AWS

使用 AWS ECR 登录 Docker 的问题