2014-10-21 47 views
11

Docker ve aws Elastic Beanstalk kullanarak çoklu hizmet mimarisi çalıştırıyorum. Bu servislerden biri mongoDB Docker görüntüsüdür. 27017 no'lu limanı, diğer servislerin bu limandaki mongo DB'ye bağlanabilmesi için ortaya çıkarması gerekiyordu. Ne yazık ki Elastik Beanstalk dahili nginx port 80'i açığa çıkarır, bu yüzden hizmetlerim 27017 numaralı bağlantı noktasında DBo DB'ye bağlanamaz.mongoDB Docker görüntüsünü Elastic Beanstalk'e nasıl dağıtılır?

/.bextensions klasörünün içindeki bazı yapılandırma dosyalarını kullanarak bazı yanıtlar gördüm (https://stackoverflow.com/a/24831425/1116959) ama bu çalışma ile nasıl çalışacağımı bilmiyorum.

Mimarim ayrıca bir rabbitMQ hizmetini ve diğer uygulama hizmetlerini (python + kereviz) içerir. Amazon VPC'yi kullanmaya başlamak daha iyi olup olmadığını bilen var mı? Herhangi bir yardım takdir

, sayesinde

+0

bunu hiç anladın mı? – gmaniac

cevap

1

Dockerrun.aws.json bağlantı noktaları için bir bölüm yer alır. Alt katmandaki ebextensions yapılandırma dosyasının yerine kullanabilirsiniz. http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_docker_ecs.html:

{ 
    "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" 
} 
+0

Deneyimlerime dayanarak bu bağlantı noktası 1234'ü bağlantı noktası 80 olarak Nginx ters proxy aracılığıyla yayımlar. Varsayılan olarak nginx yalnızca http'u destekler, Mongodb tel protokolü TCP gerektirdiği gibi çalışmaz. –

1

Şimdi birkaç ay sonra, bu multicontainer Docker ortam türünü kullanarak mümkündür. İşte

henüz üretimde kullanmadığınız bir kanıtı kavram Dockerrun.aws.json var: Bu yaklaşım çevre tipi bir güvenlik grubu olduğunu multicontainer Docker ayarlı ve olmasını gerektirir

{ 
    "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" 
     } 
     ] 
    } 
    ] 
} 

Veritabanı müşterileri 27017 port erişim sağlayan Elastik Beanstalk ortamına bağlı.

İlgili konular