如何将mongoDB Docker映像部署到Elastic Beanstalk?

如何将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文件夹中看到了一些关于使用一些配置文件的答案(),但我不知道如何使用该解决方法来实现这一点 我的体系结构还

我正在使用Docker和aws Elastic Beanstalk运行我的多服务体系结构。其中一个服务是mongoDB Docker映像。它应该公开端口27017,以便其他服务可以连接到该端口中的mongo DB。不幸的是,Elastic Beanstalk internal nginx仅公开端口80,因此我的服务无法连接到端口27017上的mongo DB

我在/.ebextensions文件夹中看到了一些关于使用一些配置文件的答案(),但我不知道如何使用该解决方法来实现这一点

我的体系结构还包括rabbitMQ服务和其他应用程序服务(python+Cellery)。有人知道开始使用亚马逊专有网络是否更好吗

感谢您的帮助。

有一整节介绍端口。您可以使用它来代替较低层的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。