Как развернуть изображение докеры mongoDB на эластичном бобовом стебле?
Я запускаю свою архитектуру с несколькими сервисами, используя Docker и awas Elastic Beanstalk. Одной из этих услуг является изображение MockoDB Docker. Он должен был открыть порт 27017, чтобы другие службы могли подключаться к БД mongo в этом порту. К сожалению, внутренний nginx из эластичного beanstalk предоставляет только порт 80, поэтому мои сервисы не могут подключиться к mongo DB на порте 27017.
Я видел несколько ответов (qaru.site/info/263221/...), используя некоторые файлы конфигурации внутри папки /.ebextensions, но я не знаю, как это получить работая с этим обходом.
Моя архитектура также включает службу rabbitMQ и другие сервисы приложений (python + celery). Кто-нибудь знает, лучше ли начать использовать Amazon VPC?
Любая помощь приветствуется, спасибо
Ответы
Ответ 1
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"
}
Ответ 2
Теперь, через несколько месяцев, это возможно с помощью типа среды Multicontainer 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"
}
]
}
]
}
Этот подход требует, чтобы тип среды был установлен в многоконнекторный докер и что группа безопасности подключена к среде Elastic Beanstalk, которая позволяет обращаться к порту 27017 от клиентов базы данных.