AWS Elastic Beanstalk和Composer

Adr*_*lls 8 amazon-ec2 amazon-web-services composer-php amazon-elastic-beanstalk

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

- .ebextensions
- scripts
- www (Webroot)
  - composer.json
Run Code Online (Sandbox Code Playgroud)

我已在容器配置选项中将文档根目录设置为/ 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/"
Run Code Online (Sandbox Code Playgroud)

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

谢谢.

Ker*_*mos 16

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

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

container_commands:
  01-install-packages:
    command: "composer.phar install -d /var/app/ondeck/www"
Run Code Online (Sandbox Code Playgroud)

  • `ondeck`目录是在container_commands阶段创建的.以下是对它的一个小小的总结:*在/ var/app/ondeck下载新版本*解压缩代码*运行所有`命令`*运行所有`container_commands`,默认CWD =/var/app/ondeck*如果它没有错误地传递,它将用ondeck替换当前:编辑原因:蹩脚的输入按钮充当SAVE. (5认同)

fou*_*r43 6

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

如果您正在尝试访问私有远程存储库,请在此处查看Q和A:使用PHP与私有Composer存储库的AWS Elastic Beanstalk,无耻插件.