AWS Elastic Beanstalk 上的 Docker 端口映射
Posted
技术标签:
【中文标题】AWS Elastic Beanstalk 上的 Docker 端口映射【英文标题】:Docker port mapping on AWS Elastic Beanstalk 【发布时间】: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
,否则部署将失败。老实说,我不知道问题出在哪里。
【参考方案1】:
事实证明,没有优雅的方法可以做到这一点。根据答案here 和here,我在一个名为.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
文件没有解决您的问题?以上是关于AWS Elastic Beanstalk 上的 Docker 端口映射的主要内容,如果未能解决你的问题,请参考以下文章
如何避免 AWS Elastic Beanstalk 上的 TooManyApplicationVersion 异常?
反应:AWS Elastic Beanstalk 上的 502 错误网关
AWS Elastic Beanstalk 上的 Wordpress
AWS Elastic Beanstalk 上的 Spring Boot 并记录到文件