在Elastic Beanstalk中使用npm db-migrate

问题描述 投票:0回答:1

我正在尝试使使用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 / ...,但是它们都返回了以下错误:

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

我想念什么?

amazon-web-services amazon-elastic-beanstalk dbmigrate
1个回答
0
投票

我知道了。问题的一部分是我试图使它变得比我需要的更困难。我真正需要做的是来自此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中创建准备好的语句,但是现在迫切需要。

© www.soinside.com 2019 - 2024. All rights reserved.