在 AWS elastic beanstalk 上部署 rails 带有 webpacker gem 的 React 应用程序

Deploy rails react app with webpacker gem on AWS elastic beanstalk

我正在尝试使用 AWS Elastic Beanstalk 部署一个 rails 5.1 & React 应用程序,该应用程序使用 webpacker gem 创建。问题是我不断收到以下错误:

Webpacker requires Node.js >= 6.0.0 and you are using 4.6.0

我在我的电脑上使用 Node 9.5.0。有什么建议吗??

使用 yum 安装 nodejs(假设您使用的是默认的 Amazon Linux)

https://nodejs.org/en/download/package-manager/#enterprise-linux-and-fedora

curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -
yum -y install nodejs

现在要在您的实例上执行此操作,您需要将所需的命令添加到 .ebextensions 目录中的配置文件中,例如:.ebextensions/01_install_dependencies.config

文件内容:

commands:
  01_download_nodejs:
    command: curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -
  02_install_nodejs:
    command: yum -y install nodejs

对于那些 运行 还需要安装 Yarn 的人,我发现下面的方法对我有用:

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"
  02_download_nodejs:
    command: curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -
  03_install_nodejs:
    command: yum -y install nodejs

对于那些在升级到 Rails 6 时发现此问题的人,I wrote a post 如何修复它。

基本上,您必须:

  • 在应用程序的顶层创建目录 .ebextensions
  • 创建 .config 文件,其中包含修复部署的命令(此处为脚本)
    • 添加将nodejs升级到>=6.14.4的命令
    • 添加容器命令以安装 webpack 和预编译资产
  • 通过弹性 beantalk 禁用资产构建
    • 设置 RAILS_SKIP_ASSET_COMPILATION 为 True

等于:

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"
  02_download_nodejs:
    command: curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -
  03_install_nodejs:
    command: yum -y install nodejs

container_commands:

  04_install_webpack:
    command: npm install --save-dev webpack
  05_precompile:
    command: bundle exec rake assets:precompile