将 npm db-migrate 与 Elastic Beanstalk 一起使用

Posted

技术标签:

【中文标题】将 npm db-migrate 与 Elastic Beanstalk 一起使用【英文标题】:Using npm db-migrate with Elastic Beanstalk 【发布时间】:2020-05-06 17:30:44 【问题描述】:

我正在尝试自动化使用 npm db-migrate 的 nodejs 应用程序的 Elastic Beanstalk 部署。我已经阅读了Customizing Software on Linux Servers 的 AWS 文档,看来我应该使用容器命令。我创建了一个文件 10_db_migrate.config 并包含了这个命令:

container_commands:
  dbmigrate:
    command: "./node_modules/db-migrate/bin/db-migrate up -e production"
    leader_only: true

我尝试了多种路径组合,包括 /tmp/deployment/application/node_modules/... 但它们都返回以下错误:

INFO [2903] - [应用程序更新代码-管道-1579538046076-21b269f7103572f7a9d500d4158751de32e395c4@20/AppDeployStage0/EbExtensionPostBuild/Infra-EmbeddedPostBuild/postbuild_0_MyAppAPI/Command dbmigrate]:活动执行失败,因为:/usr/bin/无此文件或目录 (ElasticBeanstalk::ExternalInvocationError)

我错过了什么?

【问题讨论】:

【参考方案1】:

我让它工作了。部分问题是我试图让它比我需要的更困难。我真正需要做的是来自这个post。下面是我最终的 container_command:

container_commands:
  00_node_binary:
    command: "ln -sf `ls -td /opt/elasticbeanstalk/node-install/node-* | head -1`/bin/node /bin/node"
  10_npm_binary:
    command: "ln -sf `ls -td /opt/elasticbeanstalk/node-install/node-* | head -1`/bin/npm /bin/npm"  
  20_dbmigrate:
    command: "./node_modules/.bin/db-migrate up"
    leader_only: true

我不久前发现了这一点,但我认为我还需要访问环境变量来做我想做的事。经过一些额外的测试后,我能够确定我不需要访问环境变量,所以这可以满足我的需要。仍然想知道如何引用环境变量以在 Elastic Beanstalk 上的 db-migrate 中创建准备好的语句,但现在有更紧迫的需求。

【讨论】:

以上是关于将 npm db-migrate 与 Elastic Beanstalk 一起使用的主要内容,如果未能解决你的问题,请参考以下文章

node.js db-migrate 创建扩展问题

适用于不同环境的 Grails DB-Migration

Grails db-migration dbm-db-doc 脚本失败

将 browserify 与 npm jQuery 和非 npm 插件一起使用

您可以连接到亚马逊以外的 Amazon ElastiСache Redis 吗?

如何将 Gemfury 作为私有 npm 注册表与 Yarn 结合使用?