【问题标题】:Elastic Beanstalk deploy a docker environment from the APIElastic Beanstalk 从 API 部署 docker 环境
【发布时间】:2016-07-18 20:00:35
【问题描述】:

我正在努力解决这个问题。我们的最终目标是部署一个 Mautic 的自定义 docker 容器。从他们的网站界面执行此操作没有问题。我已经解决了我所有的配置问题,而且效果很好。但我需要从 API 自动执行此操作。客户将注册我们的服务,我们希望立即为他们部署 Mautic(或在 AWS 可以工作的情况下立即部署)。

我是弹性 beantalk 和 AWS 的新手。但我的理解是我需要创建一个环境并将我的Dockerrun.aws.json 文件部署到它。但是我在 API 中找不到可以指定要部署的文件甚至要使用的 S3 存储桶的任何地方(就像您可以从界面中一样)。我曾希望通过保存一个模板并使用它,它会起作用,但我只是得到一个没有启动容器的空 Docker 实例。

这是我的 PHP api 调用示例

$eb = new ElasticBeanstalkClient(array(
    'version' => 'latest',
    'region' => 'us-east-1',
    'credentials' => array(
        'key' => '...',
        'secret' => '...'
    )
));

$newEnvironment = $eb->createEnvironment(array(
    'ApplicationName' => 'test',
    'TemplateName' => 'foo2',
    'EnvironmentName' => '...',
    'EnvironmentTier' => array(
        'Type' => 'Standard',
        'Name' => 'WebServer'
    ),
    'OptionSettings' => array(
        [
            'Namespace' => 'aws:autoscaling:launchconfiguration',
            'OptionName' => 'EC2KeyName',
            'Value' => '...'
        ],
        [
            'Namespace' => 'aws:rds:dbinstance',
            'OptionName' => 'DBUser',
            'Value' => '...'
        ],
        [
            'Namespace' => 'aws:rds:dbinstance',
            'OptionName' => 'DBPassword',
            'Value' => '...'
        ]
    )
));

模板 foo2 是从具有完全运行的 Mautic docker 容器的环境中保存的。

问题是,这会创建我需要的环境和 RDS 资源,但不会运行我的 docker 容器。

我想要的可能吗?还是我必须另寻出路?

谢谢

【问题讨论】:

    标签: php amazon-web-services amazon-elastic-beanstalk mautic


    【解决方案1】:

    想通了。我正在寻找的是$eb->createApplicationVersion(...),我可以用它来指定带有我的Dockerrun.aws.json 文件的S3 存储桶。 Documentation

    然后我可以像这样在createEnvironment() 调用中指定VersionLabel

    $newEnvironment = $eb->createEnvironment(array(
        'ApplicationName' => 'test',
        'TemplateName' => 'foo2',
        // Right here
        'VersionLabel` => 'fooVersion',
        'EnvironmentName' => '...',
        'EnvironmentTier' => array(
            'Type' => 'Standard',
            'Name' => 'WebServer'
        ),
        'OptionSettings' => array(
            [
                'Namespace' => 'aws:autoscaling:launchconfiguration',
                'OptionName' => 'EC2KeyName',
                'Value' => '...'
            ],
            [
                'Namespace' => 'aws:rds:dbinstance',
                'OptionName' => 'DBUser',
                'Value' => '...'
            ],
            [
                'Namespace' => 'aws:rds:dbinstance',
                'OptionName' => 'DBPassword',
                'Value' => '...'
            ]
        )
    ));
    

    或者我可以通过仪表板创建一个版本。 Documentation

    【讨论】:

      猜你喜欢
      • 2015-10-23
      • 1970-01-01
      • 2016-04-20
      • 2015-04-03
      • 2016-09-20
      • 2015-08-05
      • 2020-12-03
      • 2020-05-29
      • 2017-10-12
      相关资源
      最近更新 更多