node.js - 在 ElasticBeanstalk 上运行 Grunt

标签 node.js amazon-web-services amazon-ec2 amazon-elastic-beanstalk

我有一个 Node 应用程序需要 grunt 执行“构建”才能成功执行应用程序。 (运行 concat/minification/revving 源代码等)。我已经在具有 SSH 访问权限的 EC2 实例上运行了它,因为我可以通过 SSH 进入目录并在部署过程中运行 Grunt。但是,为了自动执行此操作,我现在将应用程序移动到 ElasticBeanstalk,但我很难让应用程序成功运行 grunt。迁移到 EB 的原因是为了让 SSH key 远离实时服务器,因此这些 EB 实例设置为没有 ssh 访问权限。

似乎没有可用的官方文档,有人可以指出我实现上述目标的好方向吗?我需要在应用程序启动之前执行 grunt,以便应用程序具有可用的文件(否则将出现 404)。

最佳答案

运行 grunt 与运行 gulp 非常相似,因此,我将在下面包含我的配置。

它位于我项目根目录下的 .ebextensions 文件夹中,名为 01run.config。您可以有多个配置文件,它们将按字母顺序运行(因此 01 在开头。)

这基本上只是指示进程按顺序运行这些命令,同样,它是按字母顺序完成的,所以我相应地命名了它们。

commands:
  01get_sudo:
    command: echo Defaults:root \!requiretty >> /etc/sudoers
  02npm_install:
    command: sudo yum -y --enablerepo=epel install nodejs npm
  03npm_install_bower:
    command: sudo npm install -g bower
  04npm_install_gulp:
    command: sudo npm install -g gulp
  05yum_install_git:
    command: sudo yum -y --enablerepo=epel install git
container_commands:
  01bower_install:
    command: sudo bower install --allow-root
  02gulp_sass:
    command: sudo gulp sass
  1. 获取 sudo 权限
  2. 使用 yum 安装 node.js 和 npm
  3. 安装 bower(我的 gulp 进程需要 bower)
  4. 安装gulp
  5. 安装 git(bower 需要)
  6. 然后我运行两个容器命令,它们发生在 npm install 之后和 npm start 之前:
    1. 凉亭安装
    2. gulp sass

在您的情况下,您只需删除 bower 和 git 安装,安装 grunt-cli,然后运行 ​​grunt。


自从这样做以来,我通过在部署构建文件并将构建的文件提交到 git 存储库之前预先完成所有操作,从而消除了对上述过程的需要。这至少是一次很好的学习经历,使我能够更好地控制 beantalk 部署的 ec2 实例。

关于node.js - 在 ElasticBeanstalk 上运行 Grunt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31273520/

相关文章:

security - 管理 EC2 上的实例间访问

node.js - Docker容器: Huge size for Node. 基于js的微服务

jquery - 没有从 jQuery 循环获取值

angularjs - Angular 全栈无法运行

amazon-web-services - 由于身份验证,AWS ECR 推送在 Azure DevOps 上失败

amazon-web-services - 亚马逊 Redshift 单点登录或服务帐户方法

amazon-web-services - 调用 HeadObject 操作时发生客户端错误 (400) : Bad Request Completed 1 part(s) with . .. 剩余文件

mysql - 日期值不正确 : '2022-06-11T00:00:00.000Z' for column 'date' at row 1

amazon-web-services - 无法通过 RDS 代理连接到 RDS PostgreSQL 数据库实例

amazon-ec2 - 来自正在运行的 docker/process 的 docker 命令