Подтвердить что ты не робот

Настроить AWS ElasticBeanstalk NodeJS Установить (использовать пряжу)

Isit можно настроить EBS для установки моего приложения NodeJS с помощью менеджера пакетов пряжи вместо NPM?

4b9b3361

Ответ 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. Это должно быть сделано.