Запустите многоконтейнер Docker на Elastic Beanstalk с облачной информацией - PullRequest
0 голосов
/ 27 июня 2018

Я хочу запустить многоконтейнер Docker на Elastic Beanstalk (EBS) с помощью canformation.

Из того, что я понял из этого doc , я узнал, что я создал образ докера. Нажмите на это к ECR. Затем создайте Dockerrun.aws.json в корне моего проекта. Затем свяжите путь ECR в файле Dorckerrun.aws.json. ... и все?

Итак, я создал образ докера и перенес его в ECR. Я также создал Dockerrun.aws.json с соответствующими значениями (некоторые я не совсем уверен ... например, в чем разница между mountPoints и host.sourcePath).

{
  "AWSEBDockerrunVersion": 2,
  "volumes": [
    {
      "name": "myApplication1",
      "host": {
        "sourcePath": "/var/app/current/myApplication1"
      }
    },
    {
      "name": "myApplication2",
      "host": {
        "sourcePath": "/var/app/current/myApplication2"
      }
    },
    {
      "name": "myApplication3",
      "host": {
        "sourcePath": "/var/app/current/myApplication3"
      }
    }
  ],
  "containerDefinitions": [
    {
      "name": "myApplication1",
      "image": "123456789.dkr.ecr.eu-central-1.amazonaws.com/myDocker/myApplication1",
      "essential": true,
      "memory": 128,
      "mountPoints": [
        {
          "sourceVolume": "????",
          "containerPath": "????",
          "readOnly": true
        },
        {
          "sourceVolume": "awseb-logs-myApplication1",
          "containerPath": "/var/log/myApplication1"
        }
      ]
    },
    {
      "name": "myApplication2",
      "image": "123456789.dkr.ecr.eu-central-1.amazonaws.com/myDocker/myApplication2",
      "essential": true,
      "memory": 128,
      "portMappings": [
        {
          "hostPort": 80,
          "containerPort": 80
        }
      ],
      "links": [
        "myApplication1", "myApplication3"
      ],
      "mountPoints": [
        {
          "sourceVolume": "????",
          "containerPath": "????",
          "readOnly": true
        },
        {
          "sourceVolume": "?????",
          "containerPath": "????",
          "readOnly": true
        },
        {
          "sourceVolume": "awseb-logs-myApplication2",
          "containerPath": "/var/log/myApplication2"
        }
      ]
    },
    {
      "name": "myApplication3",
      "image": "123456789.dkr.ecr.eu-central-1.amazonaws.com/myDocker/myApplication3",
      "essential": true,
      "memory": 128,
      "mountPoints": [
        {
          "sourceVolume": "?????",
          "containerPath": "?????",
          "readOnly": true
        },
        {
          "sourceVolume": "awseb-logs-myApplication3",
          "containerPath": "/var/log/myApplication3"
        }
      ]
    }
  ]
}

Но мне было интересно, как запустить это в облачной информации? Я предполагаю, что я должен определить EBS в шаблоне облачной информации (yaml) и где-то ссылаться на ресурс Dockerrun.aws.json. Если так, то как? Я не нашел шаблон для этой цели (только для контейнера с одним докером).

1 Ответ

0 голосов
/ 27 июня 2018

тома в экземпляре Создает тома из папок в экземпляре контейнера Amazon EC2 или из вашего исходного пакета (развернуто в / var / app / current). Смонтируйте эти тома в пути в контейнерах Docker, используя mountPoints в определении контейнера.

Монтирование - это монтирование тома на хосте ec2.

томов из экземпляра контейнера Amazon EC2 для монтирования и расположение в файловой системе контейнера Docker, в котором они монтируются. Когда вы монтируете тома, содержащие контент приложения, ваш контейнер может прочитать данные, которые вы загружаете в исходный комплект. При монтировании томов журнала для записи данные журнала Elastic Beanstalk может собирать данные журнала с этих томов.

Для формирования облака вам необходимо создать следующее.

Среда ElasticBeanstalk

{
   "Type" : "AWS::ElasticBeanstalk::Environment",
   "Properties" : {
      "ApplicationName" : String,
      "CNAMEPrefix" : String,
      "Description" :  String,
      "EnvironmentName" :  String,
      "OptionSettings" : [ OptionSetting, ... ],
      "PlatformArn" : String,
      "SolutionStackName" : String,
      "Tags" : [ Resource Tag, ... ],
      "TemplateName" : String,
      "Tier" : Environment Tier,
      "VersionLabel" : String
   }
}

Платформы докеров https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/concepts.platforms.html#concepts.platforms.docker

Приложение ElasticBeanstalk

{
   "Type" : "AWS::ElasticBeanstalk::Application",
   "Properties" : {
      "ApplicationName" : String,
      "Description" : String,
      "ResourceLifecycleConfig" : ApplicationResourceLifecycleConfig

   }
}

https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk.html

Версия приложения ElasticBeanstalk

{
  "Type" : "AWS::ElasticBeanstalk::ApplicationVersion",
  "Properties" : {
    "ApplicationName" : String,
    "Description" : String,
    "SourceBundle" : { SourceBundle }
  }
}

https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk-version.html

Вы можете загрузить свой код приложения и запустить Docker. https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk-sourcebundle.html

Шаблон конфигурации ElasticBeanstalk

{
  AWS::ElasticBeanstalk::ConfigurationTemplate
    {
      "Type" : "AWS::ElasticBeanstalk::ConfigurationTemplate",
      "Properties" : {  
        "ApplicationName" : String,
        "Description" : String,
        "EnvironmentId" : String,
        "OptionSettings" : [ ConfigurationOptionSetting, ... ],
        "PlatformArn" : String,
        "SolutionStackName" : String,
        "SourceConfiguration" : SourceConfiguration
      } 
    }
}

https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_docker_image.html https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_docker_v2config.html

...