Amazon web services AWS Elastic Beanstalk上的Docker端口映射
我通过Dockerfile指定了一个Docker容器,该容器必须使用Amazon web services AWS Elastic Beanstalk上的Docker端口映射,amazon-web-services,docker,amazon-elastic-beanstalk,Amazon Web Services,Docker,Amazon Elastic Beanstalk,我通过Dockerfile指定了一个Docker容器,该容器必须使用-p标志运行才能正常运行。在我的本地机器上,运行后 docker run -d -p 5000:5000 blagtagger:v0.4.3 端口映射显示为0.0.0.0:5000->5000/tcp,一切正常 现在,我需要在AWS Elastic Beanstalk上部署它,所以我准备了dockrun.AWS.json文件,如下所示: { "AWSEBDockerrunVersion": "1", "Ports":
-p
标志运行才能正常运行。在我的本地机器上,运行后
docker run -d -p 5000:5000 blagtagger:v0.4.3
端口映射显示为0.0.0.0:5000->5000/tcp
,一切正常
现在,我需要在AWS Elastic Beanstalk上部署它,所以我准备了dockrun.AWS.json
文件,如下所示:
{
"AWSEBDockerrunVersion": "1",
"Ports": [
{
"ContainerPort": 5000,
"HostPort": 5000
}
]
}
但是,容器端口似乎没有正确映射到主机端口。端口映射显示为5000/tcp
如何让Beanstalk将映射设置为
0.0.0.0:5000->5000/tcp
?事实证明,没有一种优雅的方法可以实现这一点。根据答案和,我在名为.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'
并丢弃了dockrun.aws.json
文件。您是否仔细阅读了此文档?是的,这正是我从中获取上述dockrun示例的地方。不确定这是否重要,但我的Dockerfile也会声明EXPOSE 5000,否则部署将失败。我真的不知道问题出在哪里。docker compose
文件没有解决您的问题吗?