Я внедряю существующее приложение в новый экземпляр эластичного бобового стебля.Наша кодовая база использует Webpacker для управления нашими интерфейсными ресурсами.Локальная установка веб-упаковщика для разработки не является проблемой, но я продолжаю сталкиваться с проблемами при попытке установить его на наш промежуточный сервер.
Если я правильно понимаю, экземплярам требуются сценарии для установки всего необходимого (гемов и т. Д.), Которыенаходятся в каталоге .ebextensions моего приложения.Они запускаются во время развертывания.
У меня есть сценарий перед развертыванием, который, кажется, работает, но не полностью.
Я хочу знать, как выполнить установку Webpacker на экземпляр, так как он установлен 'в интерактивном режиме, например: conflict config/webpacker.yml
Overwrite /var/app/current/config/webpacker.yml? (enter "h" for help) [Ynaqdh]
Теперь эти файлы не следует перезаписывать, поскольку они уже были правильно настроены.
Мой вопрос: как это работает внутри сценария во время развертывания, если я не могу ответитьДа или нет?
Я уже пытался ssh
в экземпляр и установить его вручную в соответствии с руководством по установке, но, насколько я понимаю, это неправильный способ установки чего-либо например.ЛЮБЫЕ изменения, которые я делаю здесь, кажутся утерянными, и мой экземпляр не заменяется автоматическим масштабированием.
Мой сценарий установки:
# Setup linux packages
option_settings:
- option_name: BUNDLE_DISABLE_SHARED_GEMS
value: "1"
- option_name: BUNDLE_PATH
value: "vendor/bundle"
files:
# Replaces the instance script. Need to specify where bundler should be installed
"/opt/elasticbeanstalk/hooks/appdeploy/pre/10_bundle_install.sh":
mode: "000775"
owner: webapp
group: users
content: |
#!/usr/bin/env bash
EB_SCRIPT_DIR=$(/opt/elasticbeanstalk/bin/get-config container -k script_dir)
EB_APP_STAGING_DIR=$(/opt/elasticbeanstalk/bin/get-config container -k app_staging_dir)
EB_APP_USER=$(/opt/elasticbeanstalk/bin/get-config container -k app_user)
EB_SUPPORT_DIR=$(/opt/elasticbeanstalk/bin/get-config container -k support_dir)
# Source the application's ruby, i.e. 2.6. Otherwise it will be 2.3, which will give this error: `bundler requires Ruby version >= 2.3.0`
. $EB_SUPPORT_DIR/envvars
. $EB_SCRIPT_DIR/use-app-ruby.sh
cd $EB_APP_STAGING_DIR
gem install bundler
echo "bundler installed, installing gems" && pwd
bundle install
echo "gems installed, continuing setup"
# Runs before `./10_bundle_install.sh`:
"/opt/elasticbeanstalk/hooks/appdeploy/pre/setup_instance.sh":
mode: "000775"
owner: webapp
group: users
content: |
#!/usr/bin/env bash
EB_SCRIPT_DIR=$(/opt/elasticbeanstalk/bin/get-config container -k script_dir)
EB_APP_STAGING_DIR=$(/opt/elasticbeanstalk/bin/get-config container -k app_staging_dir)
EB_APP_USER=$(/opt/elasticbeanstalk/bin/get-config container -k app_user)
EB_SUPPORT_DIR=$(/opt/elasticbeanstalk/bin/get-config container -k support_dir)
# Source the application's ruby, i.e. 2.6. Otherwise it will be 2.3, which will give this error: `bundler requires Ruby version >= 2.3.0`
. $EB_SUPPORT_DIR/envvars
. $EB_SCRIPT_DIR/use-app-ruby.sh
cd $EB_APP_STAGING_DIR
bundle exec bin/rails webpacker:install
echo "done, Installing configs for React"
bundle exec bin/rails webpacker:install:react
Я ожидал, что упаковщик установит все расположенные драгоценные камнив нашем Gemfile, чтобы установить webpacker, а затем установить реакцию, но я получаю эту ошибку;
[Instance: i-0d29490010213b969] Command failed on instance. Return code: 1 Output: (TRUNCATED)...:in `find_spec_for_exe': can't find gem bundler (>= 0.a) with executable bundle (Gem::GemNotFoundException)
from /opt/rubies/ruby-2.4.6/lib/ruby/site_ruby/2.4.0/rubygems.rb:308:in `activate_bin_path'
from /opt/rubies/ruby-2.4.6/bin/bundle:23:in `<main>'.
Ошибка может указывать на то, что каталоги настроены неправильно, но на данный момент я полностью потерян и мне нужны некоторые указатели.Спасибо