在AWS Elastic Beanstalk上进行Docker端口映射

5

我有一个通过 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

你仔细阅读了这份文档吗?https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/single-container-docker-configuration.html#Ports - mchawre
是的,这正是我从中获取Dockerrun示例的地方。不确定是否重要,但我的Dockerfile也声明了EXPOSE 5000,否则部署将失败。老实说,我不知道问题出在哪里。 - mommi84
1个回答

3
事实证明,没有优雅的方法来完成这个。按照这里这里的答案,我在名为.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文件。


1
docker-compose 文件没有解决你的问题吗? - Maik93

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接