如何将 mongoDB Docker 映像部署到 Elastic Beanstalk?
Posted
技术标签:
【中文标题】如何将 mongoDB Docker 映像部署到 Elastic Beanstalk?【英文标题】:How to deploy mongoDB Docker image to Elastic Beanstalk? 【发布时间】:2014-12-16 05:18:34 【问题描述】:我正在使用 Docker 和 aws Elastic Beanstalk 运行我的多服务架构。其中一项服务是 mongoDB Docker 映像。它应该公开端口 27017,以便其他服务可以连接到该端口中的 mongo DB。不幸的是,Elastic Beanstalk 内部 nginx 仅公开端口 80,因此我的服务无法连接到端口 27017 上的 mongo DB。
我已经看到了一些关于在 /.ebextensions 文件夹中使用一些配置文件的答案 (https://***.com/a/24831425/1116959),但我不知道如何使用该解决方法。
我的架构还包括rabbitMQ服务和其他应用程序服务(python+celery)。有谁知道开始使用 Amazon VPC 是否更好?
感谢任何帮助,谢谢
【问题讨论】:
你有想过这个吗? 【参考方案1】:现在几个月后,这可以通过使用多容器 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,并且将安全组附加到 Elastic Beanstalk 环境,以允许从数据库客户端访问端口 27017。
【讨论】:
【参考方案2】: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"
【讨论】:
根据我的经验,它通过 Nginx 反向代理将端口 1234 发布为端口 80。由于 nginx 默认仅支持 http,因此 Mongodb 有线协议不起作用,因为它需要 TCP。以上是关于如何将 mongoDB Docker 映像部署到 Elastic Beanstalk?的主要内容,如果未能解决你的问题,请参考以下文章