Isit можно настроить EBS для установки моего приложения NodeJS с помощью менеджера пакетов пряжи вместо NPM?
Настроить AWS ElasticBeanstalk NodeJS Установить (использовать пряжу)
Ответ 1
Я понял способ, но он немного взломан.
- Создайте файл
.ebextensions/yarn.config
. (Имя не должно быть "нитью".) -
Поместите это содержимое в файл:
files: # Runs right before `npm install` in '.../50npm.sh' "/opt/elasticbeanstalk/hooks/appdeploy/pre/49yarn.sh" : mode: "000775" owner: root group: users content: | #!/bin/bash app="$(/opt/elasticbeanstalk/bin/get-config container -k app_staging_dir)"; # install yarn wget https://dl.yarnpkg.com/rpm/yarn.repo -O /etc/yum.repos.d/yarn.repo; curl --silent --location https://rpm.nodesource.com/setup_6.x | bash -; yum -y install yarn; # npm install cd "${app}"; yarn --production;
Это ebextension создает файл, который делает 3 вещи:
- Устанавливает node.
- Устанавливает пряжу.
- Устанавливает node_modules с пряжей.
Чтобы сделать Эластичный Beanstalk запустите yarn install
, прежде чем он запустит npm install
, файл создается в /opt/elasticbeanstalk/hooks/appdeploy/pre
. Это превращает файл в кусок предварительного развертывания, что означает, что Elastic Beanstalk будет запускать его во время первого этапа развертывания. По умолчанию в этом каталоге есть еще один файл 50npm.sh
, который запускает npm install
. Поскольку Elastic Beanstalk запускает файлы в этом каталоге по алфавиту, 49yarn.sh
(наш файл) будет выполняться до 50npm.sh
(файл по умолчанию), в результате чего yarn install
работает до npm install
.
Одна потенциальная проблема заключается в том, что переменные окружения, установленные в UI Эластичного Beanstalk (под Configuration
> Software Configuration
), недоступны на этой стадии фазы развертывания. Это большая проблема, если у вас есть токен npm, который вы используете для установки частных модулей npm.
Другая потенциальная проблема заключается в том, что она устанавливает вручную node, поэтому "Node версия", указанная вами в пользовательском интерфейсе Elastic Beanstalk (под Configuration
> Software Configuration
), не повлияет на версию node ваше приложение использует; вам нужно указать его в этом ebextension. Эластичный бобин 50npm.sh
устанавливает node и запускает npm install
. Поскольку мы должны запустить yarn install
до того, как этот файл запустится, нам также нужно установить node вручную. Затем, когда Elastic Beanstalk отправляется на установку node, он обнаруживает, что node уже установлен, но не проверяет, что он является правильной версией, поэтому он пропускает установку node.
Для справки, инструкции по установке пряжи пришли отсюда: https://yarnpkg.com/docs/install#linux-tab
Ответ 2
Я сделал следующие инструкции в https://yarnpkg.com/lang/en/docs/install/
commands:
01_install_yarn:
command: "sudo wget https://dl.yarnpkg.com/rpm/yarn.repo -O /etc/yum.repos.d/yarn.repo && curl --silent --location https://rpm.nodesource.com/setup_6.x | sudo bash - && sudo yum install yarn -y"
Ответ 3
EB по умолчанию поддерживает npm, поэтому я предлагаю установить пряжу через сценарии развертывания в .ebextensions. Это должно быть сделано.