Подтвердить что ты не робот

Как развернуть изображение докеры 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?

Любая помощь приветствуется, спасибо

4b9b3361

Ответ 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 от клиентов базы данных.