如何将mongoDB Docker映像部署到Elastic Beanstalk?
我正在使用Docker和aws Elastic Beanstalk运行我的多服务体系结构。其中一个服务是mongoDB Docker映像。它应该公开端口27017,以便其他服务可以连接到该端口中的mongo DB。不幸的是,Elastic Beanstalk internal nginx仅公开端口80,因此我的服务无法连接到端口27017上的mongo DB 我在/.ebextensions文件夹中看到了一些关于使用一些配置文件的答案(),但我不知道如何使用该解决方法来实现这一点 我的体系结构还包括rabbitMQ服务和其他应用程序服务(python+Cellery)。有人知道开始使用亚马逊专有网络是否更好吗 感谢您的帮助。有一整节介绍端口。您可以使用它来代替较低层的ebextensions配置文件如何将mongoDB Docker映像部署到Elastic Beanstalk?,mongodb,amazon-web-services,nginx,docker,amazon-elastic-beanstalk,Mongodb,Amazon Web Services,Nginx,Docker,Amazon Elastic Beanstalk,我正在使用Docker和aws Elastic Beanstalk运行我的多服务体系结构。其中一个服务是mongoDB Docker映像。它应该公开端口27017,以便其他服务可以连接到该端口中的mongo DB。不幸的是,Elastic Beanstalk internal nginx仅公开端口80,因此我的服务无法连接到端口27017上的mongo DB 我在/.ebextensions文件夹中看到了一些关于使用一些配置文件的答案(),但我不知道如何使用该解决方法来实现这一点 我的体系结构还
{
"AWSEBDockerrunVersion": "1",
"Authentication": {
"Bucket": "my-bucket",
"Key": "mydockercfg"
},
"Image": {
"Name": "janedoe/image",
"Update": "true"
},
"Ports": [
{
"ContainerPort": "1234"
}
],
"Volumes": [
{
"HostDirectory": "/var/app/mydb",
"ContainerDirectory": "/etc/mysql"
}
],
"Logging": "/var/log/nginx"
}
几个月后的今天,这可以通过使用多容器Docker环境类型实现 以下是我尚未在生产中使用的Dockerrun.aws.json概念证明:
{
"AWSEBDockerrunVersion": 2,
"volumes": [
{
"name": "mongo-app",
"host": {
"sourcePath": "/var/app/current/mongo-app"
}
}
],
"containerDefinitions": [
{
"name": "mongo-app",
"image": "mongo",
"essential": true,
"memory": 6000,
"command": ["mongod","--storageEngine=wiredTiger","--logpath=/var/log/mongodb/mongo.log"],
"portMappings": [
{
"hostPort": 27017,
"containerPort": 27017
}
],
"mountPoints": [
{
"sourceVolume": "mongo-app",
"containerPath": "/data/db"
},
{
"sourceVolume": "awseb-logs-mongo-app",
"containerPath": "/var/log/mongodb"
}
]
}
]
}
这种方法要求将环境类型设置为Multicontainer Docker,并将安全组连接到弹性Beanstalk环境,该环境允许从数据库客户端访问端口27017 你知道吗?根据我的经验,这通过Nginx反向代理将端口1234发布为端口80。由于nginx默认只支持http,Mongodb wire协议无法工作,因为它需要TCP。