我正在使用Docker和aws Elastic Beanstalk运行我的多服务架构。其中一项服务是mongoDB Docker镜像。它应该公开端口27017,这样其他服务就可以通过该端口连接到mongo DB。不幸的是,Elastic Beanstalk内部的nginx只公开了80端口,所以我的服务不能连接到端口27017上的mongo DB。
我已经看过一些关于使用/.ebextensions文件夹中的配置文件的答案(https://stackoverflow.com/a/24831425/1116959),但我不知道如何使用它来解决这个问题。
我的体系结构还包括rabbitMQ服务和其他应用程序服务(python+celery)。有没有人知道开始使用Amazon VPC会更好?
感谢您的帮助,谢谢
发布于 2015-07-24 22:33:27
现在几个月过去了,这可以通过使用多容器Docker环境类型来实现:http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_docker_ecs.html。
这是一个概念验证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"
}
]
}
]
}该方法要求将环境类型设置为多容器Docker,并将安全组附加到允许从数据库客户端访问端口27017的Elastic Beanstalk环境。
发布于 2014-12-25 00:04:11
Dockerrun.aws.json有一个完整的端口部分。您可以使用该配置文件而不是较低层的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"
}https://stackoverflow.com/questions/26478962
复制相似问题