AWS Elastic Beanstalk和Composer

时间:2013-07-08 08:15:04

标签: amazon-web-services amazon-ec2 composer-php elastic-beanstalk

我有一个具有Composer依赖关系的应用程序,我希望将其部署到Elastic Beanstalk容器。但是我的composer.json文件不在项目根文件夹中。我的项目root具有以下结构:

- .ebextensions
- scripts
- www (Webroot)
  - composer.json

我已在容器配置选项中将文档根目录设置为/ www。问题是我需要在盒子上安装composer并运行composer安装脚本来添加项目依赖项。据我所知,在部署期间,EB会检查项目根目录中是否有composer.json文件并安装Composer,但在这种情况下,我的composer.json文件位于子目录中。

我认为在部署应用程序后,可以使用.ebextenstions添加命令来安装Composer和依赖项。我使用以下容器命令创建了一个.ebextensions / 01-composer.config文件:

container_commands:
  01-install-composer:
    command: "curl -sS https://getcomposer.org/installer | php"
  02-install-packages:
    command: "php composer.phar install"
    cwd: "/var/app/current/www/"

但我的应用程序不会使用此配置进行部署。希望得到一些帮助,看看我哪里出错了。

感谢。

4 个答案:

答案 0 :(得分:16)

Composer已经安装在Beanstalk的PHP AMI中。

还要考虑container_commands是通过'/ var / app / ondeck'而不是当前的。尝试这样的事情:

container_commands:
  01-install-packages:
    command: "composer.phar install -d /var/app/ondeck/www"

答案 1 :(得分:5)

请注意,AWS在Elastic Beanstalk中使用的大多数PHP容器都是通过现在运行composer.phar install来自动部署的。如果您没有“供应商”文件夹,则应该可以跳过此步骤。如果你想手动运行它,上面的方法应该可以工作,但是你应该只需要像@kewubenduben这样的东西。

如果您尝试访问私人远程存储库,请在此处查看Q和A:AWS Elastic Beanstalk using PHP with Private Composer Repositories,无耻插件。

答案 2 :(得分:1)

得到了@tbjes提供的建议,并将我的文档根目录之外的作曲家相关文件移到了项目根目录,经过快速测试后,所有内容似乎都开箱即用,无需通过.ebxtenstions配置文件运行作曲家。

答案 3 :(得分:0)

截至2019年,语法已经稍有更改。要通过弹性beantalk进行部署时自动运行composer,请将以下文件(01composer.config)添加到存储库/代码项目的根目录中的“ .ebextensions”文件夹中:

enter image description here

该文件的内容应如下所示,以便每次部署代码时都能简单但有效地运行composer:

commands:
   composer_update:
      command: export COMPOSER_HOME=/root && /usr/bin/composer.phar self-update

option_settings:
   - namespace: aws:elasticbeanstalk:application:environment
     option_name: COMPOSER_HOME
     value: /root

container_commands:
  01-install_dependencies:
       command: "php /usr/bin/composer.phar install"
       cwd: "/var/app/ondeck"
  
  02-optimize:
      command: "php /usr/bin/composer.phar dump-autoload --optimize"
      cwd: "/var/app/ondeck"

间距很重要。缩进为上述代码(从工作示例中复制,2020年6月)。 文件名开头的数字01表示这些命令文件的运行顺序。您可以根据设置更改这些数字/订单。我总是把作曲家第一名。

编辑:FYI作曲家安装未安装作曲家!它将软件包安装在composer中。 Composer必须已经安装,默认情况下应作为AWS PHP AMI的一部分安装。