У меня есть 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», и все будет работать!
Для этого вы должны иметь возможность использовать параметры конфигурации среды, а не писать файл bash самостоятельно:
Настройка программного обеспечения на серверах Linux
Это позволит вам сделать что-то вроде этого:
packages:
yum:
nodejs: []
npm: []
Тем не мение:
В настоящее время Elastic Beanstalk поддерживает следующие менеджеры пакетов: yum, rubygems, python и rpm.
Так что вам все равно нужно сделать npm install gulp
… вручную
Других решений пока нет …