【问题标题】:Docker port mapping on AWS Elastic BeanstalkAWS Elastic Beanstalk 上的 Docker 端口映射
【发布时间】:2019-11-14 10:29:32
【问题描述】:

我有一个通过 Dockerfile 指定的 Docker 容器,它必须使用 -p 标志运行才能正常运行。在我的本地机器上,运行后

docker run -d -p 5000:5000 blagtagger:v0.4.3

端口映射显示为0.0.0.0:5000->5000/tcp,一切正常。

现在,我需要将它部署在 AWS Elastic Beanstalk 上,所以我准备了我的 Dockerrun.aws.json 文件如下:

{
  "AWSEBDockerrunVersion": "1",
  "Ports": [
    {
      "ContainerPort": 5000,
      "HostPort": 5000
    }
  ]
}

但是,容器端口似乎没有正确映射到主机端口。端口映射显示为5000/tcp

如何让 Beanstalk 将映射设置为 0.0.0.0:5000->5000/tcp

【问题讨论】:

  • 你仔细阅读过这个文档吗docs.aws.amazon.com/elasticbeanstalk/latest/dg/…
  • 是的,这正是我从上面的 Dockerrun 示例中提取的地方。不确定这是否重要,但我的 Dockerfile 也确实声明了EXPOSE 5000,否则部署将失败。老实说,我不知道问题出在哪里。

标签: amazon-web-services docker amazon-elastic-beanstalk


【解决方案1】:

事实证明,没有优雅的方法可以做到这一点。根据答案herehere,我在一个名为.ebextensions/01-commands.config 的文件中添加了以下内容:

commands:
    00001_add_port_mapping:
        cwd: /tmp
        command: 'sed -i "s/docker run -d/docker run -p 5000:5000 -d/" /opt/elasticbeanstalk/hooks/appdeploy/enact/00run.sh'

并丢弃了Dockerrun.aws.json 文件。

【讨论】:

  • docker-compose 文件没有解决您的问题?
猜你喜欢
  • 2020-07-23
  • 2015-03-07
  • 2014-12-22
  • 2017-12-04
  • 2015-02-13
  • 2015-04-16
  • 1970-01-01
  • 1970-01-01
  • 2014-09-25
相关资源
最近更新 更多