Развертывание приложения PHP с эластичным beanstalk

У меня есть PHP-приложение Laravel 5.1, которое использует composer в качестве менеджера зависимостей PHP и npm в качестве менеджера зависимостей JavaScript, пока что все хорошо.

Я хочу иметь живую версию этого приложения и хочу автоматическое развертывание с ElasticBeanstalk, я создал файл конфигурации, который выглядит следующим образом:

files:
/opt/elasticbeanstalk/hooks/appdeploy/pre/11_build.sh:
group: root
mode: "000755"owner: root
content: |
#!/usr/bin/env bash
set -xe
. /opt/elasticbeanstalk/support/envvars
EB_APP_STAGING_DIR=$(/opt/elasticbeanstalk/bin/get-config  container -k app_staging_dir)
cd $EB_APP_STAGING_DIR
php artisan migrate --env="local"yum -y --enablerepo=epel install nodejs npm
npm install -g gulp
npm install
gulp --production

option_settings:
-
namespace: "aws:elasticbeanstalk:command"option_name: Timeout
value: 1600

этот набор иногда работает, а иногда это займет более 30 минут, и
Flexiblebeanstalk вызывает ошибку тайм-аута

Теперь причина следующего блока там

yum -y --enablerepo=epel install nodejs npm
npm install -g gulp

потому что, если приложение должно масштабироваться до нескольких серверов, узел может потенциально
не будет установлен, и это будет установить узел для меня

Теперь мой вопрос: правильно ли я делаю? Это правильный способ для автоматического развертывания?
когда-нибудь развертывание займет более 30 минут, это нормально? я могу улучшить свое развертывание?
Мне очень нравится печатать «eb deploy», и все будет работать!

0

Решение

Для этого вы должны иметь возможность использовать параметры конфигурации среды, а не писать файл bash самостоятельно:

Настройка программного обеспечения на серверах Linux

Это позволит вам сделать что-то вроде этого:

packages:
yum:
nodejs: []
npm: []

Тем не мение:

В настоящее время Elastic Beanstalk поддерживает следующие менеджеры пакетов: yum, rubygems, python и rpm.

Так что вам все равно нужно сделать npm install gulp… вручную

0

Другие решения

Других решений пока нет …