AWS BeanStalk environment running multi-container Docker fail to start with Health: Severe

I am trying to launch an AWS BeanStalk environment running multi container Docker but it fails with the following list of events:

2016-01-18 16:58:57 UTC+0100    WARN    Removed instance [i-a7162d2c] from your environment due to a EC2 health check failure.
2016-01-18 16:57:57 UTC+0100    WARN    Environment health has transitioned from Degraded to Severe. None of the instances are sending data.
2016-01-18 16:47:58 UTC+0100    WARN    Environment health has transitioned from Pending to Degraded. Command is executing on all instances. Command failed on all instances.
2016-01-18 16:43:58 UTC+0100    INFO    Added instance [i-a7162d2c] to your environment.
2016-01-18 16:43:27 UTC+0100    INFO    Waiting for EC2 instances to launch. This may take a few minutes.
2016-01-18 16:41:58 UTC+0100    INFO    Environment health has transitioned to Pending. There are no instances.
2016-01-18 16:41:54 UTC+0100    INFO    Created security group named: awseb-e-ih2exekpvz-stack-AWSEBSecurityGroup-M2O11DNNCJXW
2016-01-18 16:41:54 UTC+0100    INFO    Created EIP: 52.48.132.172
2016-01-18 16:41:09 UTC+0100    INFO    Using elasticbeanstalk-eu-west-1-936425941972 as Amazon S3 storage bucket for environment data.
2016-01-18 16:41:08 UTC+0100    INFO    createEnvironment is starting.

Health status is marked “Severe” and I have the following logs:

  • How to cusomize docker0 in Docker for different IP range?
  • Docker for Mac Container to Host Networking - Consul Health Checks Connection Refused
  • Access docker /var/jenkins_home from my mac
  • Docker file to call PS1 file with parameters
  • Problems trying to install docker compose on Kubuntu 16.04
  • Docker port mapping not working
  • 98 % of CPU is in use.
    Initialization failed at 2016-01-18T15:54:33Z with exit status 1 and error: Hook /opt/elasticbeanstalk/hooks/preinit/02ecs.sh failed.
    
    . /opt/elasticbeanstalk/hooks/common.sh
    /opt/elasticbeanstalk/bin/get-config container -k ecs_cluster
    EB_CONFIG_ECS_CLUSTER=awseb-figure-test-ih2exekpvz
    /opt/elasticbeanstalk/bin/get-config container -k ecs_region
    EB_CONFIG_ECS_REGION=eu-west-1
    /opt/elasticbeanstalk/bin/get-config container -k support_files_dir
    EB_CONFIG_SUPPORT_FILES_DIR=/opt/elasticbeanstalk/containerfiles/support
    is_baked ecs_agent
    [[ -f /etc/elasticbeanstalk/baking_manifest/ecs_agent ]]
    true
    aws configure set default.output json
    aws configure set default.region eu-west-1
    echo ECS_CLUSTER=awseb-figure-test-ih2exekpvz
    grep -q 'ecs start/'
    initctl status ecs
    initctl start ecs
    ecs start/running, process 8418
    TIMEOUT=120
    jq -r .ContainerInstanceArn
    curl http://localhost:51678/v1/metadata
    % Total % Received % Xferd Average Speed Time Time Time Current
    Dload Upload Total Spent Left Speed
    0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0curl: (7) Failed to connect to     localhost port 51678: Connection refused
    

    My configuration:

    Environment type: Single Instance 
    Instance type: Medium
    Root volume type: SSD
    Root Volume Size: 8GB
    Zone: EU-West
    

    My Dockerrun.aws.json:

    {
      "AWSEBDockerrunVersion": "2",
      "containerDefinitions": [
        {
          "essential": true,
          "memory": 252,
          "links": [
            "redis"
          ],
          "mountPoints": [
            {
              "containerPath": "/srv/express",
              "sourceVolume": "_WebExpress"
            },
            {
              "containerPath": "/srv/express/node_modules",
              "sourceVolume": "SrvExpressNode_Modules"
            }
          ],
          "name": "web",
          "image": "figure/web:latest",
          "portMappings": [
            {
              "containerPort": 3000,
              "hostPort": 3000
            }
          ]
        },
        {
          "essential": true,
          "memory": 252,
          "image": "redis",
          "name": "redis",
          "portMappings": [
            {
              "containerPort": 6379,
              "hostPort": 6379
            }
          ]
        }
      ],
      "family": "",
      "volumes": [
        {
          "host": {
            "sourcePath": "./web/express"
          },
          "name": "_WebExpress"
        },
        {
          "host": {
            "sourcePath": "/srv/express/node_modules"
          },
          "name": "SrvExpressNode_Modules"
        }
      ]
    }
    

  • Can I config the hosts file for spring boot docker container?
  • Docker: deploying a new version of an app that uses external resources
  • change db:5432 to 127.0.0.1:5432 in docker-compose file
  • port number not change for docker-compose
  • SQL Server on Mac with Docker : Login failed for user 'sa'.
  • Seeking for a universal way to get host IP address inside docker container
  • 2 Solutions collect form web for “AWS BeanStalk environment running multi-container Docker fail to start with Health: Severe”

    @Kilianc: If you are creating elastic beanstalk application using multi-docker container platform then you have to add the following list of policies to the default role “aws-elasticbeanstalk-ec2-role” or you can create your own role.

    1. AWSElasticBeanstalkWebTier
    2. AWSElasticBeanstalkMulticontainerDocker
    3. AWSElasticBeanstalkWorkerTier

    Thanks

    It appears I forgot to set up policies and permissions as described in AWS BeanStalk documentation:
    http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_docker_ecstutorial.html

    Docker will be the best open platform for developers and sysadmins to build, ship, and run distributed applications.